diff --git a/.github/workflows/autobuild.yml b/.github/workflows/autobuild.yml index 4e3fab3f60..e620f0371d 100644 --- a/.github/workflows/autobuild.yml +++ b/.github/workflows/autobuild.yml @@ -43,3 +43,66 @@ jobs: with: packages: ${{ needs.manifest.outputs.build_matrix }} publish: ${{ github.event_name == 'push' }} + + appstream: + needs: build + runs-on: ubuntu-latest + container: + image: ghcr.io/terrapkg/appstream-generator:main + steps: + - name: Download artifacts + uses: actions/download-artifact@v5 + with: + merge-multiple: true + path: ./artifacts + - name: Generate test catalog + # run appstream-builder, then add step summary + run: | + set -x + appstream-builder -v \ + --packages-dir=artifacts/rpms \ + --icons-dir=icons \ + --include-failed \ + --output-dir=output \ + --uncompressed-icons \ + --origin=test \ + --basename=test \ + --veto-ignore=missing-parents \ + --veto-ignore=missing-info 2>&1 | tee asb.log + - name: Export logs + id: export_logs + run: | + echo "## AppStream Builder Log" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo '```log' >> $GITHUB_STEP_SUMMARY + cat asb.log >> $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + echo '---' >> $GITHUB_STEP_SUMMARY + + - name: Report Summary + id: report_summary + run: | + echo "## AppStream Builder Report" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + if grep -q "veto" asb.log; then + echo "::group::Vetoed packages" + echo "### Vetoed packages" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo '```xml' >> $GITHUB_STEP_SUMMARY + echo "$(grep -i 'veto' asb.log)" >> $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + echo "::warning file=asb.log::Some packages were vetoed during AppStream generation. Please review the 'Vetoed packages' section in the summary for details." + echo "::endgroup::" + fi + echo "## Full Data Summary" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "### Generated Appstream files:" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + for file in output/*.xml.gz; do + echo "#### \`$file\`" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo '```xml' >> $GITHUB_STEP_SUMMARY + zcat "$file" >> $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + done diff --git a/README.md b/README.md index fc0c5d7f18..2a67929ae3 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,5 @@ # Terra Sources -[![Repository status](https://repology.org/badge/repository-big/terra_40.svg?header=Terra+40)](https://repology.org/repository/terra_40) -[![Repository status](https://repology.org/badge/repository-big/terra_41.svg?header=Terra+41)](https://repology.org/repository/terra_41) -[![Repository status](https://repology.org/badge/repository-big/terra_rawhide.svg?header=Terra+Rawhide)](https://repology.org/repository/terra_rawhide) - Terra is a rolling-release Fedora repository for all the software you need. With Terra, you can install the latest packages knowing that quality and security are assured. @@ -13,6 +9,8 @@ This monorepo contains the package manifests for all packages in Terra. ## Installation +The latest detailed instructions are available in our Devdocs: https://developer.fyralabs.com/terra/installing + ### Fedora ```bash @@ -48,6 +46,10 @@ sudo dnf install --nogpgcheck --repofrompath 'terra,https://repos.fyralabs.com/t Our documentation can be found on our [Devdocs](https://developer.fyralabs.com/terra/). +## pkgs.org + +pkgs.org provides a list of the packages available in the main stream: https://fedora.pkgs.org/rawhide/terra/ + ## Questions? Feel free to reach out by [joining our community](https://wiki.ultramarine-linux.org/en/community/community/). We're always happy to help! diff --git a/anda/apps/anki-bin/anki-bin.spec b/anda/apps/anki-bin/anki-bin.spec index 2147f0f5d0..029564fa6d 100644 --- a/anda/apps/anki-bin/anki-bin.spec +++ b/anda/apps/anki-bin/anki-bin.spec @@ -1,9 +1,9 @@ -%global xurl https://files.pythonhosted.org/packages/a3/86/c1c459a06466ffc3a205de9852875a922c378a7bfb9fb1310bea019dacd1/anki-25.7.5-cp39-abi3-manylinux_2_36_x86_64.whl -%global aurl https://files.pythonhosted.org/packages/29/75/81eb12d43381f5150a2fb1acc2757d25741af5bf0635f40faab61eefcb44/anki-25.7.5-cp39-abi3-manylinux_2_36_aarch64.whl -%global qurl https://files.pythonhosted.org/packages/5e/e6/4c36d3c1ed0e2a6e4bf95eb919d603078d935b5c75950c7627e79340f25a/aqt-25.7.5-py3-none-any.whl +%global xurl https://files.pythonhosted.org/packages/22/1c/37fe0377fd5fbfe27b17db20679d76aeb1cef7be3ddfb22e24c0bb62cf96/anki-25.9.2-cp39-abi3-manylinux_2_36_x86_64.whl +%global aurl https://files.pythonhosted.org/packages/c1/49/484a786ea0e1b3659de9478f2546368c5970da60a1cd403cec1fa2f81d65/anki-25.9.2-cp39-abi3-manylinux_2_36_aarch64.whl +%global qurl https://files.pythonhosted.org/packages/e5/d4/26016857a780290264866e1818b1a408106c379906fbd186a0aa26eb1054/aqt-25.9.2-py3-none-any.whl Name: anki-bin -Version: 25.7.5 +Version: 25.9.2 Release: 1%?dist Summary: Flashcard program for using space repetition learning (Installed with wheel) License: AGPL-3.0-or-later AND GPL-3.0-or-later AND LGPL-3.0-or-later AND MIT AND BSD-3-Clause AND CC-BY-SA-3.0 AND CC-BY-3.0 AND Apache-2.0 AND CC-BY-2.5 diff --git a/anda/apps/anki-qt5/anki-qt5.spec b/anda/apps/anki-qt5/anki-qt5.spec index b1879201d1..39dff5b184 100644 --- a/anda/apps/anki-qt5/anki-qt5.spec +++ b/anda/apps/anki-qt5/anki-qt5.spec @@ -1,5 +1,5 @@ Name: anki-qt5 -Version: 25.07.5 +Version: 25.09.2 Release: 1%?dist Summary: Flashcard program for using space repetition learning License: AGPL-3.0-or-later AND GPL-3.0-or-later AND LGPL-3.0-or-later AND MIT AND BSD-3-Clause AND CC-BY-SA-3.0 AND CC-BY-3.0 AND Apache-2.0 AND CC-BY-2.5 diff --git a/anda/apps/anki/anki.spec b/anda/apps/anki/anki.spec index 4fd052c8b4..8d29ac2e71 100644 --- a/anda/apps/anki/anki.spec +++ b/anda/apps/anki/anki.spec @@ -1,5 +1,5 @@ Name: anki -Version: 25.07.5 +Version: 25.09.2 Release: 1%?dist Summary: Flashcard program for using space repetition learning License: AGPL-3.0-or-later AND GPL-3.0-or-later AND LGPL-3.0-or-later AND MIT AND BSD-3-Clause AND CC-BY-SA-3.0 AND CC-BY-3.0 AND Apache-2.0 AND CC-BY-2.5 diff --git a/anda/apps/bitwarden/cli.bin/bitwarden-cli.bin.spec b/anda/apps/bitwarden/cli.bin/bitwarden-cli.bin.spec index 3a8cdf718d..e8dc912f68 100644 --- a/anda/apps/bitwarden/cli.bin/bitwarden-cli.bin.spec +++ b/anda/apps/bitwarden/cli.bin/bitwarden-cli.bin.spec @@ -1,5 +1,5 @@ Name: bitwarden-cli.bin -Version: 2025.8.0 +Version: 2025.11.0 Release: 1%?dist Summary: Bitwarden command-line client License: GPL-3.0-only diff --git a/anda/apps/bitwarden/cli/bitwarden-cli.spec b/anda/apps/bitwarden/cli/bitwarden-cli.spec index a3041e5baa..a8dcbb5fff 100644 --- a/anda/apps/bitwarden/cli/bitwarden-cli.spec +++ b/anda/apps/bitwarden/cli/bitwarden-cli.spec @@ -6,7 +6,7 @@ %endif Name: bitwarden-cli -Version: 2025.8.0 +Version: 2025.10.0 Release: 1%?dist Summary: Bitwarden command-line client License: GPL-3.0-only diff --git a/anda/apps/chdig/anda.hcl b/anda/apps/chdig/anda.hcl new file mode 100644 index 0000000000..3075a01453 --- /dev/null +++ b/anda/apps/chdig/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "chdig.spec" + } +} diff --git a/anda/apps/chdig/chdig.spec b/anda/apps/chdig/chdig.spec new file mode 100644 index 0000000000..3599552052 --- /dev/null +++ b/anda/apps/chdig/chdig.spec @@ -0,0 +1,35 @@ +%undefine __brp_mangle_shebangs + +Name: chdig +Version: 25.11.1 +Release: 1%?dist +Summary: Dig into ClickHouse with TUI interface +URL: https://github.com/azat/chdig +Source0: %url/archive/refs/tags/v%{version}.tar.gz +License: MIT +BuildRequires: cargo anda-srpm-macros cargo-rpm-macros mold clang fontconfig-devel glib2 libgcc + +%description +%{summary}. + +%prep +%autosetup -n %{name}-%{version} +%cargo_prep_online + +%build +%cargo_build + +%install +install -Dm755 target/rpm/chdig %{buildroot}%{_bindir}/chdig +%cargo_license_summary_online +%{cargo_license_online -a} > LICENSE.dependencies + +%files +%doc README.md +%license LICENSE +%license LICENSE.dependencies +%{_bindir}/chdig + +%changelog +* Fri Nov 14 2025 Owen Zimmerman +- Intial Commit diff --git a/anda/apps/chdig/update.rhai b/anda/apps/chdig/update.rhai new file mode 100644 index 0000000000..b5b761f772 --- /dev/null +++ b/anda/apps/chdig/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("azat/chdig")); diff --git a/anda/apps/coolercontrol/coolercontrol.spec b/anda/apps/coolercontrol/coolercontrol.spec index f342fc7281..1981385ea1 100644 --- a/anda/apps/coolercontrol/coolercontrol.spec +++ b/anda/apps/coolercontrol/coolercontrol.spec @@ -8,7 +8,7 @@ for background device management, as well as a GUI to expertly customize your se %global __brp_mangle_shebangs %{nil} Name: coolercontrol -Version: 2.2.2 +Version: 3.0.2 Release: 1%?dist Summary: Cooling device control for Linux License: GPL-3.0-or-later diff --git a/anda/apps/discord-canary-openasar/discord-canary-openasar.spec b/anda/apps/discord-canary-openasar/discord-canary-openasar.spec index 8ef8bbbc4b..466aa4d775 100644 --- a/anda/apps/discord-canary-openasar/discord-canary-openasar.spec +++ b/anda/apps/discord-canary-openasar/discord-canary-openasar.spec @@ -6,7 +6,7 @@ %global __provides_exclude_from %{_datadir}/%{name}/.*\\.so Name: discord-canary-openasar -Version: 0.0.748 +Version: 0.0.810 Release: 1%?dist Summary: A snappier Discord rewrite with features like further customization and theming License: MIT AND https://discord.com/terms diff --git a/anda/apps/discord-canary/discord-canary.spec b/anda/apps/discord-canary/discord-canary.spec index 565a41fd14..e5be0b249d 100644 --- a/anda/apps/discord-canary/discord-canary.spec +++ b/anda/apps/discord-canary/discord-canary.spec @@ -6,7 +6,7 @@ %global __provides_exclude_from %{_datadir}/%{name}/.*\\.so Name: discord-canary -Version: 0.0.748 +Version: 0.0.810 Release: 1%?dist Summary: Free Voice and Text Chat for Gamers URL: discord.com diff --git a/anda/apps/discord-openasar/discord-openasar.spec b/anda/apps/discord-openasar/discord-openasar.spec index 3766e49b3a..80d13d6bb2 100644 --- a/anda/apps/discord-openasar/discord-openasar.spec +++ b/anda/apps/discord-openasar/discord-openasar.spec @@ -6,7 +6,7 @@ %global __provides_exclude_from %{_datadir}/%{name}/.*\\.so Name: discord-openasar -Version: 0.0.107 +Version: 0.0.115 Release: 1%?dist Summary: A snappier Discord rewrite with features like further customization and theming License: MIT AND https://discord.com/terms diff --git a/anda/apps/discord-ptb-openasar/discord-ptb-openasar.spec b/anda/apps/discord-ptb-openasar/discord-ptb-openasar.spec index 274b6eced0..b5403ea84e 100644 --- a/anda/apps/discord-ptb-openasar/discord-ptb-openasar.spec +++ b/anda/apps/discord-ptb-openasar/discord-ptb-openasar.spec @@ -6,7 +6,7 @@ %global __provides_exclude_from %{_datadir}/%{name}/.*\\.so Name: discord-ptb-openasar -Version: 0.0.158 +Version: 0.0.166 Release: 1%?dist Summary: A snappier Discord rewrite with features like further customization and theming License: MIT AND https://discord.com/terms diff --git a/anda/apps/discord-ptb/discord-ptb.spec b/anda/apps/discord-ptb/discord-ptb.spec index d1946abaae..c96946c742 100644 --- a/anda/apps/discord-ptb/discord-ptb.spec +++ b/anda/apps/discord-ptb/discord-ptb.spec @@ -6,7 +6,7 @@ %global __provides_exclude_from %{_datadir}/%{name}/.*\\.so Name: discord-ptb -Version: 0.0.158 +Version: 0.0.166 Release: 1%?dist Summary: Free Voice and Text Chat for Gamers. URL: https://discord.com diff --git a/anda/apps/discord/discord.spec b/anda/apps/discord/discord.spec index 1224125e33..016c5f1bb0 100644 --- a/anda/apps/discord/discord.spec +++ b/anda/apps/discord/discord.spec @@ -6,7 +6,7 @@ %global __provides_exclude_from %{_datadir}/%{name}/.*\\.so Name: discord -Version: 0.0.107 +Version: 0.0.115 Release: 1%?dist Summary: Free Voice and Text Chat for Gamers URL: https://discord.com diff --git a/anda/apps/dorion/anda.hcl b/anda/apps/dorion/anda.hcl new file mode 100644 index 0000000000..6724f407bb --- /dev/null +++ b/anda/apps/dorion/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "dorion.spec" + } +} diff --git a/anda/apps/dorion/dorion.spec b/anda/apps/dorion/dorion.spec new file mode 100644 index 0000000000..dcd318796a --- /dev/null +++ b/anda/apps/dorion/dorion.spec @@ -0,0 +1,63 @@ +%undefine __brp_mangle_shebangs + +Name: dorion +Version: 6.11.0 +Release: 1%?dist +Summary: Tiny alternative Discord client with a smaller footprint, snappier startup, themes, plugins and more! +SourceLicense: GPL-3.0-only +License: ((Apache-2.0 OR MIT) AND BSD-3-Clause) AND ((MIT OR Apache-2.0) AND Unicode-3.0) AND 0BSD AND (0BSD OR MIT OR Apache-2.0) AND Apache-2.0 AND (Apache-2.0 AND ISC) AND (Apache-2.0 AND MIT) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR ISC OR MIT) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND (BSD-2-Clause OR Apache-2.0 OR MIT) AND BSD-3-Clause AND (BSD-3-Clause AND MIT) AND (BSD-3-Clause OR Apache-2.0) AND (BSD-3-Clause OR MIT) AND (BSD-3-Clause OR MIT OR Apache-2.0) AND CC0-1.0 AND (CC0-1.0 OR MIT-0 OR Apache-2.0) AND CDLA-Permissive-2.0 AND ISC AND MIT AND (MIT OR Apache-2.0) AND (MIT OR Apache-2.0 OR LGPL-2.1-or-later) AND (MIT OR Apache-2.0 OR Zlib) AND (MIT OR Zlib OR Apache-2.0) AND MPL-2.0 AND Unicode-3.0 AND (Unlicense OR MIT) AND Zlib AND (Zlib OR Apache-2.0 OR MIT) +URL: https://spikehd.dev/projects/dorion +Source0: https://github.com/SpikeHD/Dorion/archive/refs/tags/v%version.tar.gz +Source1: https://raw.githubusercontent.com/uwu/shelter-builds/main/shelter.js +Packager: madonuko +BuildRequires: pnpm rpm_macro(cargo_install) rust-packaging +BuildRequires: cmake gcc-c++ +BuildRequires: pkgconfig(gtk+-3.0) +BuildRequires: pkgconfig(webkit2gtk-web-extension-4.1) +BuildRequires: pkgconfig(openssl) + +%description +Dorion is an alternative Discord client aimed towards lower-spec or storage-sensitive PCs that supports themes, plugins, and more! + +%prep +%autosetup -n Dorion-%version +pnpm i + +cat< Dorion.desktop +[Desktop Entry] +Categories=Network; +Exec=Dorion +Icon=Dorion +Name=Dorion +Terminal=false +Type=Application +MimeType=x-scheme-handler/discord +EOF + +cd src-tauri +%cargo_prep_online +cp %{S:1} injection/shelter.js + +%build +pnpm run build:js +cd src-tauri +cd extension_webkit +%cmake +%cmake_build +cp %__cmake_builddir/libextension.so . +cd .. +%cargo_license_summary_online +%{cargo_license_online} > ../LICENSE.dependencies + +%install +install -Dpm655 Dorion.desktop -t %buildroot%_datadir/applications +cd src-tauri +%cargo_install +install -Dpm644 icons/icon.png %buildroot%_iconsdir/hicolor/512x512/apps/Dorion.png + +%files +%doc README.md +%license LICENSE LICENSE.dependencies +%_bindir/Dorion +%_iconsdir/hicolor/512x512/apps/Dorion.png +%_datadir/applications/Dorion.desktop diff --git a/anda/apps/dorion/update.rhai b/anda/apps/dorion/update.rhai new file mode 100644 index 0000000000..ea57709ec4 --- /dev/null +++ b/anda/apps/dorion/update.rhai @@ -0,0 +1 @@ +rpm.version(gh_rawfile("SpikeHD/Dorion", "main", "package.json").json().version); diff --git a/anda/apps/envision/envision.spec b/anda/apps/envision/envision.spec index 9becf7faf9..38931b880f 100644 --- a/anda/apps/envision/envision.spec +++ b/anda/apps/envision/envision.spec @@ -1,5 +1,5 @@ -%global commit 32b222cd9e2749cfdecb216189f954c719e3f66e -%global commit_date 20250820 +%global commit 9615228a515fd77abb0cab5de21528f1f33d26f6 +%global commit_date 20251104 %global shortcommit %(c=%{commit}; echo ${c:0:7}) Name: envision-nightly diff --git a/anda/apps/feishin/feishin.spec b/anda/apps/feishin/feishin.spec index 9f7a34606b..a7d90e6248 100644 --- a/anda/apps/feishin/feishin.spec +++ b/anda/apps/feishin/feishin.spec @@ -6,7 +6,7 @@ %global __provides_exclude_from %{_datadir}/%{name}/.*\\.so Name: feishin -Version: 0.19.0 +Version: 0.21.2 Release: 1%?dist Summary: A modern self-hosted music player License: GPL-3.0 diff --git a/anda/apps/flameshot/flameshot-nightly.spec b/anda/apps/flameshot/flameshot-nightly.spec index 81d2e7286b..50ce9fb2ed 100644 --- a/anda/apps/flameshot/flameshot-nightly.spec +++ b/anda/apps/flameshot/flameshot-nightly.spec @@ -1,9 +1,9 @@ #? https://github.com/flameshot-org/flameshot/blob/master/packaging/rpm/fedora/flameshot.spec -%global ver 13.1.0 -%global commit 06f41a86cc91d53d68871fcdc67053239ff1e87b +%global ver 13.3.0 +%global commit 0f37bf09972c7e66ed78ad0460d2ebce97b82809 %global shortcommit %{sub %{commit} 1 7} -%global commit_date 20250830 +%global commit_date 20251119 %global devel_name QtColorWidgets %global _distro_extra_cflags -fuse-ld=mold %global _distro_extra_cxxflags -fuse-ld=mold diff --git a/anda/apps/flatpost/flatpost.spec b/anda/apps/flatpost/flatpost.spec index dd9cdf780e..ddc7f53f25 100644 --- a/anda/apps/flatpost/flatpost.spec +++ b/anda/apps/flatpost/flatpost.spec @@ -1,5 +1,5 @@ Name: flatpost -Version: 1.1.0 +Version: 1.1.1 Release: 1%?dist License: BSD-2-Clause Summary: Desktop environment agnostic Flathub software center. diff --git a/anda/apps/goofcord/stable/goofcord.spec b/anda/apps/goofcord/stable/goofcord.spec index a67e1bac70..61975f712c 100644 --- a/anda/apps/goofcord/stable/goofcord.spec +++ b/anda/apps/goofcord/stable/goofcord.spec @@ -9,7 +9,7 @@ %endif Name: goofcord -Version: 1.10.2 +Version: 1.11.1.beta.1 Release: 1%?dist License: OSL-3.0 Summary: A privacy-minded Legcord fork. diff --git a/anda/apps/halloy/halloy.spec b/anda/apps/halloy/halloy.spec index 47adfce9ec..205181234a 100644 --- a/anda/apps/halloy/halloy.spec +++ b/anda/apps/halloy/halloy.spec @@ -4,7 +4,7 @@ %global crate halloy Name: halloy -Version: 2025.8 +Version: 2025.11 Release: 1%?dist Summary: An open-source IRC client written in Rust, with the Iced GUI library Packager: Yoong jin diff --git a/anda/apps/komikku/komikku.spec b/anda/apps/komikku/komikku.spec index b37d2747b7..aea81fc04b 100644 --- a/anda/apps/komikku/komikku.spec +++ b/anda/apps/komikku/komikku.spec @@ -3,12 +3,12 @@ %global gtk4_version 4.14.4 %global libadwaita_version 1.5.1 %global pure_protobuf_version 2.0.0 -%global raw_ver v1.86.0 +%global raw_ver v1.93.0 Name: komikku -Version: 1.86.0 +Version: 1.93.0 %forgemeta -Release: 2%?dist +Release: 1%?dist Summary: A manga reader for GNOME BuildArch: noarch diff --git a/anda/apps/legcord/nightly/legcord-nightly.spec b/anda/apps/legcord/nightly/legcord-nightly.spec index 0f573e3edb..7d9c3758da 100644 --- a/anda/apps/legcord/nightly/legcord-nightly.spec +++ b/anda/apps/legcord/nightly/legcord-nightly.spec @@ -1,5 +1,5 @@ -%global commit 53299982c074d3b8f2b2ddacc9babf9971f3aef7 -%global commit_date 20250826 +%global commit 94128d8fbcac0a14af4c529b29e0d91b0b997796 +%global commit_date 20251114 %global shortcommit %(c=%{commit}; echo ${c:0:7}) %global debug_package %nil %global __strip /bin/true diff --git a/anda/apps/legcord/stable/legcord.spec b/anda/apps/legcord/stable/legcord.spec index 2d6e752d8f..780fd70e4f 100644 --- a/anda/apps/legcord/stable/legcord.spec +++ b/anda/apps/legcord/stable/legcord.spec @@ -9,8 +9,8 @@ %endif Name: legcord -Version: 1.1.5 -Release: 2%?dist +Version: 1.1.6 +Release: 1%?dist License: OSL-3.0 Summary: Custom lightweight Discord client designed to enhance your experience URL: https://github.com/Legcord/Legcord diff --git a/anda/apps/mission-center/mission-center.spec b/anda/apps/mission-center/mission-center.spec index d47733b512..6206875c3d 100644 --- a/anda/apps/mission-center/mission-center.spec +++ b/anda/apps/mission-center/mission-center.spec @@ -1,9 +1,9 @@ %global forgeurl0 https://gitlab.com/mission-center-devs/mission-center -Version: 1.0.2 +Version: 1.1.0 %global tag0 v%{version} %global forgeurl1 https://gitlab.com/mission-center-devs/gng -%global commit1 319d95d29cbc3c373ae61cff228e8440fbaadbbb +%global commit1 1a8916cfeb06a3d63eefa8b17972eb2988e16da3 %forgemeta -a diff --git a/anda/apps/mpv/anda.hcl b/anda/apps/mpv/anda.hcl index 80317ce6af..732993970d 100644 --- a/anda/apps/mpv/anda.hcl +++ b/anda/apps/mpv/anda.hcl @@ -3,6 +3,6 @@ project pkg { spec = "mpv-nightly.spec" } labels { - nightly = "1" + nightly = 1 } } diff --git a/anda/apps/mpv/mpv-nightly.spec b/anda/apps/mpv/mpv-nightly.spec index eed5df460d..c2412d4a2a 100644 --- a/anda/apps/mpv/mpv-nightly.spec +++ b/anda/apps/mpv/mpv-nightly.spec @@ -1,9 +1,9 @@ # Disable X11 for RHEL 10+ %bcond x11 %[%{undefined rhel} || 0%{?rhel} < 10] -%global commit efb70d7f27780bbc7db2ad9a7f2fbf05e610c97e +%global commit e6885cb926ca05a23f54f1b44b250f6f981b4e46 %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global commit_date 20250830 +%global commit_date 20251119 %global ver 0.40.0 Name: mpv-nightly @@ -82,6 +82,10 @@ BuildRequires: pkgconfig(xscrnsaver) BuildRequires: pkgconfig(xv) %endif +%ifarch x86_64 +BuildRequires: libOpenCL.so.1 +%endif + Requires: hicolor-icon-theme Provides: mplayer-backend Recommends: (yt-dlp or youtube-dl) diff --git a/anda/apps/neohtop/com.github.neohtop.metainfo.xml b/anda/apps/neohtop/com.github.neohtop.metainfo.xml new file mode 100644 index 0000000000..3838142372 --- /dev/null +++ b/anda/apps/neohtop/com.github.neohtop.metainfo.xml @@ -0,0 +1,31 @@ + + + com.github.neohtop + CC0-1.0 + MIT + /usr/share/icons/hicolor/128x128/apps/NeoHtop.png + + NeoHtop + System monitoring on steroids + + +

+ A modern, cross-platform system monitor built on top of Svelte, Rust, and Tauri. +

+
+ + NeoHtop.desktop + + https://abdenasser.github.io/neohtop/ + + neohtop + + + + system monitor + + + + + +
diff --git a/anda/apps/neohtop/neohtop.spec b/anda/apps/neohtop/neohtop.spec index b6da0e0383..7b995f3883 100644 --- a/anda/apps/neohtop/neohtop.spec +++ b/anda/apps/neohtop/neohtop.spec @@ -1,13 +1,15 @@ %global __brp_mangle_shebangs %{nil} +%global appid com.github.neohtop Name: neohtop Version: 1.2.0 -Release: 1%?dist +Release: 2%?dist Summary: System monitoring on steroids License: MIT URL: https://github.com/Abdenasser/neohtop Source0: %url/archive/refs/tags/v%version.tar.gz Source1: NeoHtop.desktop +Source2: com.github.neohtop.metainfo.xml Packager: Owen Zimmerman BuildRequires: rust BuildRequires: nodejs-npm @@ -18,6 +20,10 @@ BuildRequires: gtk3-devel BuildRequires: rust-gdk-pixbuf-sys-devel BuildRequires: glib2-devel BuildRequires: openssl-devel +BuildRequires: anda-srpm-macros +BuildRequires: terra-appstream-helper + +Provides: NeoHtop %description %summary. @@ -37,6 +43,8 @@ install -Dpm644 src-tauri/icons/128x128@2x.png %buildroot%{_iconsdir}/hicolor/25 install -Dpm644 src-tauri/icons/32x32.png %buildroot%{_iconsdir}/hicolor/32x32/apps/NeoHtop.png install -Dpm644 src-tauri/icons/128x128.png %buildroot%{_iconsdir}/hicolor/128x128/apps/NeoHtop.png +%terra_appstream -o %{SOURCE2} + %files %doc README.md %license LICENSE @@ -45,7 +53,10 @@ install -Dpm644 src-tauri/icons/128x128.png %buildroot%{_iconsdir}/hicolor/128x1 %{_iconsdir}/hicolor/256x256@2/apps/NeoHtop.png %{_iconsdir}/hicolor/32x32/apps/NeoHtop.png %{_iconsdir}/hicolor/128x128/apps/NeoHtop.png +%{_metainfodir}/com.github.neohtop.metainfo.xml %changelog +* Wed Nov 19 2025 Owen Zimmerman +- Add metainfo * Sat Feb 15 2025 Owen Zimmerman - Initial package diff --git a/anda/apps/peazip/peazip.spec b/anda/apps/peazip/peazip.spec index b2666295e3..8f80e23e2a 100644 --- a/anda/apps/peazip/peazip.spec +++ b/anda/apps/peazip/peazip.spec @@ -2,7 +2,7 @@ %define debug_package %nil Name: peazip -Version: 10.6.1 +Version: 10.7.0 Release: 1%?dist Summary: Free Zip / Unzip software and Rar file extractor. Cross-platform file and archive manager License: LGPL-3.0-only diff --git a/anda/apps/protontricks/protontricks.spec b/anda/apps/protontricks/protontricks.spec index 5ea09b3a59..35b17794db 100644 --- a/anda/apps/protontricks/protontricks.spec +++ b/anda/apps/protontricks/protontricks.spec @@ -2,7 +2,7 @@ %global pypi_name protontricks Name: terra-%{pypi_name} -Version: 1.13.0 +Version: 1.13.1 Release: 1%?dist Summary: Simple wrapper that does winetricks things for Proton enabled games BuildArch: noarch diff --git a/anda/apps/rasputin/anda.hcl b/anda/apps/rasputin/anda.hcl new file mode 100644 index 0000000000..926af7e8c2 --- /dev/null +++ b/anda/apps/rasputin/anda.hcl @@ -0,0 +1,8 @@ +project pkg { + rpm { + spec = "rasputin.spec" + } + labels { + nightly = 1 + } +} diff --git a/anda/apps/rasputin/rasputin.spec b/anda/apps/rasputin/rasputin.spec new file mode 100644 index 0000000000..0938b1c519 --- /dev/null +++ b/anda/apps/rasputin/rasputin.spec @@ -0,0 +1,45 @@ +%global commit a822eb767a330711e67714428c1c56cf3c82f044 +%global commit_date 20251118 +%global shortcommit %(c=%{commit}; echo ${c:0:7}) + +Name: rasputin +Version: 0~%commit_date.git~%shortcommit +Release: 1%?dist +Summary: Mouse and keyboard settings for Raspberry Pi Desktop +License: BSD-3-Clause +URL: https://github.com/raspberrypi-ui/rasputin +Source0: %url/archive/%commit.tar.gz +Packager: Owen Zimmerman + +BuildRequires: meson +BuildRequires: ninja-build +BuildRequires: gtk3-devel +BuildRequires: libxml2-devel +BuildRequires: intltool +BuildRequires: gcc + +Requires: libxml2 + +%description +%summary. + +%prep +%autosetup -n rasputin-%{commit} + +%build +%meson +%meson_build + +%install +%meson_install + +%find_lang rpcc_rasputin + +%files -f rpcc_rasputin.lang +%license debian/copyright +%{_datadir}/rpcc/ui/rasputin.ui +%{_libdir}/rpcc/librpcc_rasputin.so + +%changelog +* Sun Oct 26 2025 Owen Zimmerman +- Initial commit diff --git a/anda/apps/rasputin/update.rhai b/anda/apps/rasputin/update.rhai new file mode 100644 index 0000000000..341bac044f --- /dev/null +++ b/anda/apps/rasputin/update.rhai @@ -0,0 +1,5 @@ +rpm.global("commit", gh_commit("raspberrypi-ui/appset")); +if rpm.changed() { + rpm.release(); + rpm.global("commit_date", date()); +} diff --git a/anda/apps/rp-appset/anda.hcl b/anda/apps/rp-appset/anda.hcl index 904fc2aab3..10f3cae442 100644 --- a/anda/apps/rp-appset/anda.hcl +++ b/anda/apps/rp-appset/anda.hcl @@ -2,4 +2,7 @@ project pkg { rpm { spec = "rp-appset.spec" } + labels { + nightly = 1 + } } diff --git a/anda/apps/rp-appset/rp-appset.spec b/anda/apps/rp-appset/rp-appset.spec index c59e3cbdaf..9a3d1a024d 100644 --- a/anda/apps/rp-appset/rp-appset.spec +++ b/anda/apps/rp-appset/rp-appset.spec @@ -1,5 +1,5 @@ -%global commit 5b4b8f65c3d2795a61e765a01e07af9bfe3d1990 -%global commit_date 20250501 +%global commit a822eb767a330711e67714428c1c56cf3c82f044 +%global commit_date 20251118 %global shortcommit %(c=%{commit}; echo ${c:0:7}) Name: appset @@ -19,7 +19,6 @@ BuildRequires: intltool BuildRequires: gcc Requires: libxml2 -Requires: gtk3 Provides: pipanel Provides: rp-appset @@ -37,15 +36,20 @@ Provides: rp-appset %install %meson_install -%find_lang pipanel +%find_lang rpcc_pipanel -%files -f pipanel.lang +%files -f rpcc_pipanel.lang %doc README %license debian/copyright -%{_bindir}/pipanel -%{_datadir}/applications/pipanel.desktop -%{_datadir}/pipanel/ui/pipanel.ui +%{_datadir}/rpcc/ui/pipanel.ui +%{_libdir}/rpcc/librpcc_pipanel.so +%{_iconsdir}/hicolor/24x24/apps/appset-desktop.png +%{_iconsdir}/hicolor/24x24/apps/appset-taskbar.png +%{_iconsdir}/hicolor/32x32/apps/appset-desktop.png +%{_iconsdir}/hicolor/32x32/apps/appset-taskbar.png %changelog +* Sat Oct 25 2025 Owen Zimmerman +- Follow upstream by changing to build plugin instead of application * Fri Aug 15 2025 Owen Zimmerman - Package appset diff --git a/anda/apps/rp-bookshelf/anda.hcl b/anda/apps/rp-bookshelf/anda.hcl index c17d264801..e70f353210 100644 --- a/anda/apps/rp-bookshelf/anda.hcl +++ b/anda/apps/rp-bookshelf/anda.hcl @@ -2,4 +2,7 @@ project pkg { rpm { spec = "rp-bookshelf.spec" } + labels { + nightly = 1 + } } diff --git a/anda/apps/rp-bookshelf/rp-bookshelf.spec b/anda/apps/rp-bookshelf/rp-bookshelf.spec index 1a52bd980e..f77eb88712 100644 --- a/anda/apps/rp-bookshelf/rp-bookshelf.spec +++ b/anda/apps/rp-bookshelf/rp-bookshelf.spec @@ -1,5 +1,5 @@ -%global commit 53102fb6f4b0324cc89635f0ef58966c6b847a74 -%global commit_date 20250327 +%global commit d09cc3fdb2071552f18b4564e1c77cb288b580db +%global commit_date 20251104 %global shortcommit %(c=%{commit}; echo ${c:0:7}) Name: rp-bookshelf diff --git a/anda/apps/rpcc/anda.hcl b/anda/apps/rpcc/anda.hcl new file mode 100644 index 0000000000..3a3fb971f7 --- /dev/null +++ b/anda/apps/rpcc/anda.hcl @@ -0,0 +1,8 @@ +project pkg { + rpm { + spec = "rpcc.spec" + } + labels { + nightly = 1 + } +} diff --git a/anda/apps/rpcc/rpcc.spec b/anda/apps/rpcc/rpcc.spec new file mode 100644 index 0000000000..5687f21f1f --- /dev/null +++ b/anda/apps/rpcc/rpcc.spec @@ -0,0 +1,57 @@ +%global commit 6ae576bee3ca42f0aea597e76d2e0df0e1184bad +%global commit_date 20251030 +%global shortcommit %(c=%{commit}; echo ${c:0:7}) + +Name: rpcc +Version: 0~%commit_date.git~%shortcommit +Release: 1%?dist +Summary: Raspberry Pi Control Centre - an extensible settings application for the Raspberry Pi Desktop +License: BSD-3-Clause +URL: https://github.com/raspberrypi-ui/rpcc +Source0: %url/archive/%commit.tar.gz +Packager: Owen Zimmerman + +BuildRequires: meson +BuildRequires: ninja-build +BuildRequires: gtk3-devel +BuildRequires: libxml2-devel +BuildRequires: intltool +BuildRequires: gcc + +Requires: libxml2 +Requires: gtk3 + +%description +Raspberry Pi Control Centre - an extensible settings application for the Raspberry Pi Desktop + +rpcc is a settings application which loads tab pages at runtime from plugin modules. + +A number of packages contain plugins which are installed as standard on Raspberry Pi images: + - pipanel - appearance settings + - rc-gui - Raspberry Pi Configuration + - raindrop - screen layout + - rasputin - mouse and keyboard input + - rpinters - printers + +%prep +%autosetup -n rpcc-%commit + +%build +%meson +%meson_build + +%install +%meson_install + +%find_lang rpcc + +%files -f rpcc.lang +%doc README +%license debian/copyright +%{_bindir}/rpcc +%{_datadir}/applications/rpcc.desktop +%{_datadir}/rpcc/ui/rpcc.ui + +%changelog +* Sat Oct 25 2025 Owen Zimmerman +- Initial commit diff --git a/anda/apps/rpcc/update.rhai b/anda/apps/rpcc/update.rhai new file mode 100644 index 0000000000..9751db3685 --- /dev/null +++ b/anda/apps/rpcc/update.rhai @@ -0,0 +1,5 @@ +rpm.global("commit", gh_commit("raspberrypi-ui/rpcc")); +if rpm.changed() { + rpm.release(); + rpm.global("commit_date", date()); +} diff --git a/anda/apps/ruffle/ruffle-nightly.spec b/anda/apps/ruffle/ruffle-nightly.spec index 9dcbbba652..db26b55db8 100644 --- a/anda/apps/ruffle/ruffle-nightly.spec +++ b/anda/apps/ruffle/ruffle-nightly.spec @@ -1,4 +1,4 @@ -%global ver 2025-09-01 +%global ver 2025-11-20 %global goodver %(echo %ver | sed 's/-//g') %global __brp_mangle_shebangs %{nil} %bcond_without mold @@ -17,7 +17,7 @@ Source0: https://github.com/ruffle-rs/ruffle/archive/refs/tags/nightly-%v Provides: ruffle BuildRequires: cargo-rpm-macros >= 24 BuildRequires: anda-srpm-macros mold -BuildRequires: gcc-c++ cmake java +BuildRequires: gcc-c++ cmake BuildRequires: java-latest-openjdk-headless BuildRequires: pkgconfig(alsa) BuildRequires: pkgconfig(gtk+-3.0) diff --git a/anda/apps/scrcpy/anda.hcl b/anda/apps/scrcpy/anda.hcl new file mode 100644 index 0000000000..91d14db1fb --- /dev/null +++ b/anda/apps/scrcpy/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "scrcpy.spec" + } +} diff --git a/anda/apps/scrcpy/scrcpy.spec b/anda/apps/scrcpy/scrcpy.spec new file mode 100644 index 0000000000..e5ee7c7f6c --- /dev/null +++ b/anda/apps/scrcpy/scrcpy.spec @@ -0,0 +1,52 @@ +Name: scrcpy +Version: 3.3.3 +Release: 1%?dist +Summary: Display and control your Android device +License: Apache-2.0 +URL: https://github.com/Genymobile/scrcpy +Source0: %url/archive/refs/tags/v%version.tar.gz +Packager: madonuko +BuildRequires: meson ninja-build cmake nasm gcc +BuildRequires: pkgconfig(sdl2) +BuildRequires: pkgconfig(libavcodec) +BuildRequires: pkgconfig(libavdevice) +BuildRequires: pkgconfig(libavformat) +BuildRequires: pkgconfig(libavutil) +BuildRequires: pkgconfig(libswresample) +BuildRequires: pkgconfig(libusb) +BuildRequires: pkgconfig(libv4l2) +BuildRequires: cmake(VulkanHeaders) +BuildRequires: vulkan-loader +BuildRequires: OpenCL-ICD-Loader +BuildConflicts: dkms-nvidia akmod-nvidia + +%description +This application mirrors Android devices (video and audio) connected via USB or TCP/IP and allows control using the computer's keyboard and mouse. It does not require root access or an app installed on the device. It works on Linux, Windows, and macOS. + +%pkg_completion -Bz + +%prep +%autosetup + +%build +export WORK_DIR=$PWD/work +export OUTPUT_DIR=$PWD/output +export VERSION=v%version + +%meson \ + -Dcompile_server=false \ + -Dportable=false \ + -Dstatic=false +%meson_build + +%install +%meson_install + +%files +%doc README.md +%license LICENSE +%_bindir/scrcpy +%_datadir/applications/scrcpy-console.desktop +%_datadir/applications/scrcpy.desktop +%_iconsdir/hicolor/*/apps/scrcpy.png +%_mandir/man1/scrcpy.1.* diff --git a/anda/apps/scrcpy/update.rhai b/anda/apps/scrcpy/update.rhai new file mode 100644 index 0000000000..008bd5ccd6 --- /dev/null +++ b/anda/apps/scrcpy/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("Genymobile/scrcpy")); diff --git a/anda/apps/signal-desktop/signal-desktop.spec b/anda/apps/signal-desktop/signal-desktop.spec index 0465fb92d7..473607ce33 100644 --- a/anda/apps/signal-desktop/signal-desktop.spec +++ b/anda/apps/signal-desktop/signal-desktop.spec @@ -1,9 +1,12 @@ #? https://gitlab.archlinux.org/archlinux/packaging/packages/signal-desktop/-/blob/main/PKGBUILD %define debug_package %{nil} +# Make electron_license macro properly work +%bcond bundled_electron 1 + # Exclude private libraries %global __requires_exclude libffmpeg.so -%global __provides_exclude_from %{_datadir}/%{name}/.*\\.so +%global __provides_exclude ^lib.*\\.so.*$ %ifarch x86_64 %define arch %{nil} @@ -11,21 +14,34 @@ %define arch arm64- %endif -Name: signal-desktop -Version: 7.68.0 -Release: 1%?dist +Name: signal-desktop +Version: 7.80.0 +Release: 1%?dist Summary: A private messenger for Windows, macOS, and Linux URL: https://signal.org Source0: https://github.com/signalapp/Signal-Desktop/archive/refs/tags/v%{version}.tar.gz # signal.desktop from https://github.com/signalflatpak/signal/blob/master/org.signal.Signal.desktop Source1: signal.desktop -License: AGPL-3.0 AND %electron_licenses +License: AGPL-3.0 AND %{electron_license} ExclusiveArch: x86_64 aarch64 -BuildRequires: pulseaudio-libs-devel libX11-devel pnpm make gcc g++ python3 -BuildRequires: git-lfs + +BuildRequires: pulseaudio-libs-devel +BuildRequires: libX11-devel +BuildRequires: git-lfs +BuildRequires: git-core +BuildRequires: anda-srpm-macros +BuildRequires: pnpm +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: git-core +BuildRequires: make +BuildRequires: nodejs +BuildRequires: nodejs-npm +BuildRequires: python3 + Requires: gtk3 Requires: libwayland-cursor -Requires: libwayland-client +Requires: libwayland-client Requires: libxkbcommon Requires: gdk-pixbuf2 Requires: libthai @@ -48,12 +64,26 @@ Requires: mesa-libgbm Requires: at-spi2-atk Requires: expat Requires: alsa-lib +Requires: xdg-utils +Requires: re2 +Requires: (libXtst or libXtst6) +Requires: libXScrnSaver +Requires: libnotify +Requires: (libuuid or libuuid1) +Requires: at-spi2-core +Requires: c-ares +Requires: gtk3 +Requires: minizip + +Provides: signal +Provides: Signal +Provides: Signal-Desktop %description Signal Desktop links with Signal on Android or iOS and lets you message from your Windows, macOS, and Linux computers. %prep -%autosetup -n Signal-Desktop-%{version} -p1 +%autosetup -n Signal-Desktop-%{version} %build pnpm install --frozen-lockfile @@ -95,8 +125,8 @@ install -Dm644 build/icons/png/512x512.png %{buildroot}%{_iconsdir}/hicolor/512x install -Dm644 build/icons/png/64x64.png %{buildroot}%{_iconsdir}/hicolor/64x64/apps/signal.png install -Dm644 %{SOURCE1} %{buildroot}%{_datadir}/applications/signal.desktop -mkdir -p %buildroot%_bindir -ln -s %_libdir/signal-desktop/signal-desktop %buildroot%_bindir/signal-desktop +mkdir -p %{buildroot}%{_bindir} +ln -s %{_libdir}/signal-desktop/signal-desktop %{buildroot}%{_bindir}/signal-desktop %files %license LICENSE @@ -119,5 +149,7 @@ ln -s %_libdir/signal-desktop/signal-desktop %buildroot%_bindir/signal-desktop %{_iconsdir}/hicolor/64x64/apps/signal.png %changelog +* Tue Nov 11 2025 Owen Zimmerman +- Add more Requires:, fix electron_license macro application, fix some formatting * Fri Aug 8 2025 june-fish - Initial Package diff --git a/anda/apps/subtitleedit/subtitleedit.spec b/anda/apps/subtitleedit/subtitleedit.spec index 22b5a06c00..effc4a3dd8 100644 --- a/anda/apps/subtitleedit/subtitleedit.spec +++ b/anda/apps/subtitleedit/subtitleedit.spec @@ -2,7 +2,7 @@ %global realname subtitleedit Name: %realname.bin -Version: 4.0.13 +Version: 4.0.14 Release: 1%?dist Summary: An advanced subtitle editor and converter License: GPL-3.0-only diff --git a/anda/apps/throne/Sagernet.SingBox.Version.txt b/anda/apps/throne/Sagernet.SingBox.Version.txt index 6741c5e834..ba4874eb87 100644 --- a/anda/apps/throne/Sagernet.SingBox.Version.txt +++ b/anda/apps/throne/Sagernet.SingBox.Version.txt @@ -1 +1 @@ -v1.11.15 \ No newline at end of file +v1.12.12 \ No newline at end of file diff --git a/anda/apps/throne/throne.desktop b/anda/apps/throne/throne.desktop index 5be2046d62..0a8a23b594 100644 --- a/anda/apps/throne/throne.desktop +++ b/anda/apps/throne/throne.desktop @@ -2,10 +2,10 @@ Version=1.0 Terminal=false Type=Application -Name=nekoray +Name=Throne Categories=Network; Comment=Qt based cross-platform GUI proxy configuration manager (backend: sing-box) Comment[zh_CN]=基于 Qt 的跨平台代理配置管理器 (后端 sing-box) -Keywords=Internet;VPN;Proxy;sing-box; -Exec=/bin/nekoray -Icon=/usr/share/icons/nekoray.ico +Keywords=Internet;VPN;Proxy;sing-box;nekoray; +Exec=/usr/bin/throne +Icon=/usr/share/icons/Throne.ico diff --git a/anda/apps/throne/throne.sh b/anda/apps/throne/throne.sh index 6a41b65f7a..684d9b0967 100644 --- a/anda/apps/throne/throne.sh +++ b/anda/apps/throne/throne.sh @@ -1,2 +1,2 @@ #!/bin/sh -/lib64/nekoray/nekoray -appdata "${@}" +/usr/lib64/throne/throne -appdata "${@}" diff --git a/anda/apps/throne/throne.spec b/anda/apps/throne/throne.spec index 3e891d37fa..f08855153f 100644 --- a/anda/apps/throne/throne.spec +++ b/anda/apps/throne/throne.spec @@ -1,7 +1,7 @@ #? https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=throne-git Name: throne -Version: 1.0.5 +Version: 1.0.8 Release: 1%?dist Summary: Qt based cross-platform GUI proxy configuration manager (backend: sing-box) URL: https://github.com/throneproj/Throne @@ -17,6 +17,7 @@ Source2: Sagernet.SingBox.Version.txt Source3: %{name}.desktop Source4: %{name}.sh +Source5: https://raw.githubusercontent.com/throneproj/routeprofiles/rule-set/srslist.h BuildRequires: rpm_macro(cmake) BuildRequires: rpm_macro(cmake_build) @@ -39,7 +40,7 @@ BuildRequires: golang BuildRequires: rpm_macro(gobuildflags) BuildRequires: protobuf-compiler Requires: %{name}-core -%define core throne_core +%define core Core %package core Summary: %{summary} @@ -65,6 +66,8 @@ cd gen protoc -I . --go_out=. --protorpc_out=. libcore.proto %build +mkdir -p %__cmake_builddir +cp %{S:5} %__cmake_builddir/ %cmake %cmake_build DEST=$PWD/%{__cmake_builddir}/%{core} @@ -84,8 +87,6 @@ install -Dm755 %__cmake_builddir/Throne %buildroot%_libdir/%name/%name install -Dm755 %__cmake_builddir/%core %buildroot%_libdir/%name/%core install -Dpm755 %{SOURCE4} %{buildroot}%{_bindir}/%{name} install -Dpm644 %{SOURCE3} %{buildroot}%{_datadir}/applications/%{name}.desktop -sed -i 's~/bin~%{_bindir}~g' %{buildroot}%{_datadir}/applications/%{name}.desktop -sed -i 's~/bin~%{_bindir}~g;s~/lib64~%{_libdir}~g' %{buildroot}%{_bindir}/%{name} install -Dpm644 res/Throne.ico -t %buildroot%_iconsdir/ install -Dpm644 res/public/Throne.png -t %buildroot%_datadir/pixmaps/ patchelf --remove-rpath %{buildroot}%{_libdir}/%{name}/%{name} diff --git a/anda/apps/throne/update.rhai b/anda/apps/throne/update.rhai index 0ca9d5a1a7..a688a4950c 100644 --- a/anda/apps/throne/update.rhai +++ b/anda/apps/throne/update.rhai @@ -1,3 +1,2 @@ -rpm.version(find(`([\d.]+)-\d+-\d+-\d+`, gh_rawfile("throneproj/Throne", "dev", "throne_version.txt"), 1)); - +rpm.version(gh("throneproj/Throne")); open_file("anda/apps/throne/Sagernet.SingBox.Version.txt", "w").write(gh("sagernet/sing-box")); diff --git a/anda/apps/tracktion-waveform/.gitignore b/anda/apps/tracktion-waveform/.gitignore new file mode 100644 index 0000000000..c776bdfc0e --- /dev/null +++ b/anda/apps/tracktion-waveform/.gitignore @@ -0,0 +1 @@ +*.deb \ No newline at end of file diff --git a/anda/apps/tracktion-waveform/anda.hcl b/anda/apps/tracktion-waveform/anda.hcl new file mode 100644 index 0000000000..92a997b602 --- /dev/null +++ b/anda/apps/tracktion-waveform/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64", "aarch64"] + rpm { + spec = "tracktion-waveform.spec" + } +} diff --git a/anda/apps/tracktion-waveform/tracktion-waveform.spec b/anda/apps/tracktion-waveform/tracktion-waveform.spec new file mode 100644 index 0000000000..251b1d729e --- /dev/null +++ b/anda/apps/tracktion-waveform/tracktion-waveform.spec @@ -0,0 +1,51 @@ +%undefine __brp_mangle_shebangs +%define debug_package %nil +%global __strip /bin/true + +Name: tracktion-waveform +Version: 13.5.13 +Packager: Cappy Ishihara +Release: 1%{?dist} +Summary: Tracktion Waveform DAW +ExclusiveArch: x86_64 aarch64 +%global majver %(echo %{version} | cut -d '.' -f 1) +%global truncated_ver %(echo %{version} | tr -d .) + +%ifarch x86_64 +%global pkgarch amd64 +%endif + +%ifarch aarch64 +%global pkgarch arm64 +%endif + +License: Proprietary +URL: https://www.tracktion.com/products/waveform-free +Source0: https://downloads.tracktion.com/w%{majver}/%{truncated_ver}b/waveform%{majver}_%{version}_%{pkgarch}.deb + +BuildRequires: tar +BuildRequires: binutils + +%description +%{summary} + +%prep +%autosetup -Tc + +ar x %{SOURCE0} +%install +tar xvf data.tar.gz -C %{buildroot} +export QA_RPATHS="[0-7]" + +%files +%{_bindir}/Waveform%{majver} +%{_datadir}/pixmaps/* +%{_datadir}/mime/packages/waveform13.xml +%{_datadir}/applications/waveform13.desktop +%{_docdir}/Waveform%{majver}/* + + + +%changelog +* Tue Oct 07 2025 Cappy Ishihara +- Initial Release diff --git a/anda/apps/vesktop/vesktop.spec b/anda/apps/vesktop/vesktop.spec index cd9b00c004..316e5a4f8a 100644 --- a/anda/apps/vesktop/vesktop.spec +++ b/anda/apps/vesktop/vesktop.spec @@ -7,8 +7,8 @@ Name: vesktop Obsoletes: VencordDesktop < 1.5.8-1 Obsoletes: vencord-desktop < 1.5.8-1 -Version: 1.5.8 -Release: 2%?dist +Version: 1.6.1 +Release: 1%?dist License: GPL-3.0 Summary: Vesktop is a cross platform desktop app aiming to give you a snappier Discord experience with Vencord pre-installed URL: https://github.com/Vencord/Vesktop @@ -58,17 +58,17 @@ cp -r dist/*-unpacked/. %buildroot/usr/share/vesktop/. install -Dm755 dist/*-unpacked/vesktop %buildroot/usr/bin/vesktop ln -sf /usr/share/vesktop/vesktop %buildroot/usr/bin/vesktop ln -sf /usr/bin/vesktop %buildroot/usr/bin/vencorddesktop -install -Dm644 vesktop.desktop %buildroot/usr/share/applications/vesktop.desktop -install -Dm644 build/icon.png %buildroot/usr/share/pixmaps/vesktop.png +install -Dm644 vesktop.desktop %{buildroot}%{_datadir}/applications/vesktop.desktop +install -Dm644 build/icon.svg %{buildroot}%{_iconsdir}/hicolor/scalable/apps/vesktop.svg %files %doc README.md %license LICENSE -/usr/bin/vesktop -/usr/bin/vencorddesktop -/usr/share/applications/vesktop.desktop -/usr/share/pixmaps/vesktop.png -/usr/share/vesktop/* +%{_bindir}/vesktop +%{_bindir}/vencorddesktop +%{_datadir}/applications/vesktop.desktop +%{_iconsdir}/hicolor/scalable/apps/vesktop.svg +%{_datadir}/vesktop/* %changelog * Thu Jul 24 2025 Atmois - 1.5.8-2 diff --git a/anda/apps/voicevox/voicevox.spec b/anda/apps/voicevox/voicevox.spec index 8bb281d576..17d29eacec 100644 --- a/anda/apps/voicevox/voicevox.spec +++ b/anda/apps/voicevox/voicevox.spec @@ -13,7 +13,7 @@ %global __requires_exclude ^((libffmpeg[.]so.*)|(lib.*\\.so.*))$ Name: voicevox -Version: 0.24.2 +Version: 0.25.0 Release: 1%?dist Summary: Free Japanese text-to-speech editor License: LGPL-3.0 diff --git a/anda/apps/vpkedit/vpkedit.spec b/anda/apps/vpkedit/vpkedit.spec index 4c16ba627b..2967b32c89 100644 --- a/anda/apps/vpkedit/vpkedit.spec +++ b/anda/apps/vpkedit/vpkedit.spec @@ -1,5 +1,5 @@ Name: vpkedit -Version: 5.0.0.1 +Version: 5.0.0.3 Release: 1%?dist Summary: A CLI/GUI tool to create, read, and write several pack file formats License: MIT diff --git a/anda/apps/winetricks/git/winetricks-git.spec b/anda/apps/winetricks/git/winetricks-git.spec index 3af3fe81c2..d21cb85529 100644 --- a/anda/apps/winetricks/git/winetricks-git.spec +++ b/anda/apps/winetricks/git/winetricks-git.spec @@ -1,9 +1,9 @@ # Fedora sometimes sources the snapshots under stable versions and just bumps release # For user clarity I have separated these into different packages -%global commit 9a399f26a42db7c0c8c9c9688c8b98ffc38d22f6 +%global commit 533f41704766765cfb3706fb2aa197acbb05df32 %global shortcommit %(c=%{commit}; echo ${c:0:7}) %global ver 20250102 -%global commit_date 20250826 +%global commit_date 20251105 Name: winetricks-git Version: %{ver}^%{commit_date}git.%{shortcommit} diff --git a/anda/apps/youtube-music/youtube-music.spec b/anda/apps/youtube-music/youtube-music.spec index 03419406ed..672bfe046b 100644 --- a/anda/apps/youtube-music/youtube-music.spec +++ b/anda/apps/youtube-music/youtube-music.spec @@ -12,7 +12,7 @@ %global vendor_pnpm 1 Name: youtube-music -Version: 3.10.0 +Version: 3.11.0 Release: 1%?dist Summary: YouTube Music Desktop App bundled with custom plugins (and built-in ad blocker / downloader) Source1: youtube-music.desktop diff --git a/anda/desktops/compiz9/compiz9.spec b/anda/desktops/compiz9/compiz9.spec index cdd86817a6..032c4e0fd3 100644 --- a/anda/desktops/compiz9/compiz9.spec +++ b/anda/desktops/compiz9/compiz9.spec @@ -1,4 +1,4 @@ -%define _ubuntu_rel 22.10.20220822-0ubuntu16 +%define _ubuntu_rel 25.10.20250930-0ubuntu1 %global _hardened_build 0 %global build_cflags %{__build_flags_lang_c} -Wno-incompatible-pointer-types diff --git a/anda/desktops/gnome/gnome-shell-extension-appmenu-is-back/gnome-shell-extension-appmenu-is-back.spec b/anda/desktops/gnome/gnome-shell-extension-appmenu-is-back/gnome-shell-extension-appmenu-is-back.spec index fe8aa23070..3346f502ec 100644 --- a/anda/desktops/gnome/gnome-shell-extension-appmenu-is-back/gnome-shell-extension-appmenu-is-back.spec +++ b/anda/desktops/gnome/gnome-shell-extension-appmenu-is-back/gnome-shell-extension-appmenu-is-back.spec @@ -2,8 +2,8 @@ %global uuid %{extension}@fthx Name: gnome-shell-extension-%{extension} -Version: 2 -Release: 1%{?dist} +Version: 12 +Release: 2%?dist Summary: GNOME Shell extension to bring back the app menu License: GPL-3.0-only URL: https://github.com/fthx/appmenu-is-back @@ -11,9 +11,8 @@ URL: https://github.com/fthx/appmenu-is-back BuildArch: noarch Source0: https://github.com/fthx/appmenu-is-back/archive/refs/tags/v%{version}.tar.gz -Patch0: https://github.com/fthx/appmenu-is-back/compare/v2..703a31acf900eb7bcab3462baeefa815ec7f13ab.patch -Requires: (gnome-shell >= 47~ with gnome-shell < 49~) +Requires: (gnome-shell >= 48~ with gnome-shell < 50~) Recommends: gnome-extensions-app %description diff --git a/anda/desktops/gnome/gnome-shell-extension-gpu-supergfxctl-switch/anda.hcl b/anda/desktops/gnome/gnome-shell-extension-gpu-supergfxctl-switch/anda.hcl new file mode 100644 index 0000000000..3870cb13d0 --- /dev/null +++ b/anda/desktops/gnome/gnome-shell-extension-gpu-supergfxctl-switch/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "gnome-shell-extension-gpu-supergfxctl-switch.spec" + } +} diff --git a/anda/desktops/gnome/gnome-shell-extension-gpu-supergfxctl-switch/gnome-shell-extension-gpu-supergfxctl-switch.spec b/anda/desktops/gnome/gnome-shell-extension-gpu-supergfxctl-switch/gnome-shell-extension-gpu-supergfxctl-switch.spec new file mode 100644 index 0000000000..fc3de66afd --- /dev/null +++ b/anda/desktops/gnome/gnome-shell-extension-gpu-supergfxctl-switch/gnome-shell-extension-gpu-supergfxctl-switch.spec @@ -0,0 +1,39 @@ +%global commit 1de26db2ea4166fdca85306300b12bdc24f2c955 +%global shortcommit %(c=%{commit}; echo ${c:0:7}) +%global commit_date 20250925 +%global ver 11 +%global extension gpu-switcher-supergfxctl +%global uuid %{extension}@chikobara.github.io + +Name: gnome-shell-extension-%{extension} +Version: %ver^%commit_date.%shortcommit +Release: 1%?dist +Summary: GPU Profile switcher Gnome-Shell-Extension for ASUS laptops using Supergfxctl +License: GPL-3.0-only +URL: https://github.com/chikobara/GPU-Switcher-Supergfxctl + +Source0: %url/archive/%commit.tar.gz + +Requires: (gnome-shell >= 48~ with gnome-shell < 50~) asusctl supergfxctl +Recommends: gnome-extensions-app + +BuildArch: noarch + +%description +GPU Profile switcher Gnome-Shell-Extension for ASUS laptops using Supergfxctl + +%prep +%autosetup -n GPU-Switcher-Supergfxctl-%{commit} -p1 + +%install +install -Dm644 metadata.json %{buildroot}%{_datadir}/gnome-shell/extensions/%{uuid}/metadata.json +install -Dm644 extension.js %{buildroot}%{_datadir}/gnome-shell/extensions/%{uuid}/extension.js + +%files +%license LICENSE +%doc README.md +%{_datadir}/gnome-shell/extensions/%{uuid} + +%changelog +* Mon Oct 27 2025 june-fish - 11 +- Initial Package diff --git a/anda/desktops/gnome/gnome-shell-extension-gpu-supergfxctl-switch/update.rhai b/anda/desktops/gnome/gnome-shell-extension-gpu-supergfxctl-switch/update.rhai new file mode 100644 index 0000000000..10ce2bdccd --- /dev/null +++ b/anda/desktops/gnome/gnome-shell-extension-gpu-supergfxctl-switch/update.rhai @@ -0,0 +1,9 @@ +if filters.contains("nightly") { + rpm.global("commit", gh_commit("chikobara/GPU-Switcher-Supergfxctl")); + if rpm.changed() { + let v = find("\"version\": ([.\\d]+)\n", gh_rawfile("chikobara/GPU-Switcher-Supergfxctl", "main", "metadata.json"), 1); + rpm.global("ver", v); + rpm.global("commit_date", date()); + rpm.release(); + } +} diff --git a/anda/desktops/gnome/gnome-shell/gnome-shell.spec b/anda/desktops/gnome/gnome-shell/gnome-shell.spec index be6afac342..6ca63862bd 100644 --- a/anda/desktops/gnome/gnome-shell/gnome-shell.spec +++ b/anda/desktops/gnome/gnome-shell/gnome-shell.spec @@ -1,6 +1,6 @@ %global tarball_version %%(echo %{version} | tr '~' '.') -%global major_version 48 -%global minor_version 2 +%global major_version 49 +%global minor_version 1 %if 0%{?rhel} %global portal_helper 0 @@ -10,7 +10,7 @@ Name: gnome-shell Version: %{major_version}.%{minor_version} -Release: 3%{?dist}.switcheroo +Release: 2%{?dist}.switcheroo Summary: Window management and application launching for GNOME Provides: gnome-shell.switcheroo = %version-%release @@ -214,7 +214,6 @@ mkdir -p %{buildroot}%{_datadir}/gnome-shell/search-providers %find_lang gnome-shell %check -desktop-file-validate %{buildroot}%{_datadir}/applications/org.gnome.Shell.desktop desktop-file-validate %{buildroot}%{_datadir}/applications/org.gnome.Shell.Extensions.desktop %if %{portal_helper} @@ -230,7 +229,6 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/org.gnome.Shell.Porta %{_bindir}/gnome-shell-test-tool %{_datadir}/glib-2.0/schemas/00_org.gnome.shell.gschema.override %{_datadir}/applications/org.gnome.Shell.Extensions.desktop -%{_datadir}/applications/org.gnome.Shell.desktop %{_datadir}/bash-completion/completions/gnome-extensions %{_datadir}/gnome-control-center/keybindings/50-gnome-shell-launchers.xml %{_datadir}/gnome-control-center/keybindings/50-gnome-shell-screenshots.xml @@ -242,6 +240,7 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/org.gnome.Shell.Porta %{_datadir}/dbus-1/services/org.gnome.Shell.HotplugSniffer.service %{_datadir}/dbus-1/services/org.gnome.Shell.Notifications.service %{_datadir}/dbus-1/services/org.gnome.Shell.Screencast.service +%{_datadir}/dbus-1/interfaces/org.gnome.Shell.Brightness.xml %{_datadir}/dbus-1/interfaces/org.gnome.Shell.Extensions.xml %{_datadir}/dbus-1/interfaces/org.gnome.Shell.Introspect.xml %{_datadir}/dbus-1/interfaces/org.gnome.Shell.PadOsd.xml @@ -257,7 +256,6 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/org.gnome.Shell.Porta %{_userunitdir}/org.gnome.Shell-disable-extensions.service %{_userunitdir}/org.gnome.Shell.target %{_userunitdir}/org.gnome.Shell@wayland.service -%{_userunitdir}/org.gnome.Shell@x11.service %{_libdir}/gnome-shell/ %{_libexecdir}/gnome-shell-calendar-server %{_libexecdir}/gnome-shell-perf-helper diff --git a/anda/desktops/gnome/nautilus-open-any-terminal/nautilus-open-any-terminal.spec b/anda/desktops/gnome/nautilus-open-any-terminal/nautilus-open-any-terminal.spec index 62b31839ba..2392c4404a 100644 --- a/anda/desktops/gnome/nautilus-open-any-terminal/nautilus-open-any-terminal.spec +++ b/anda/desktops/gnome/nautilus-open-any-terminal/nautilus-open-any-terminal.spec @@ -1,8 +1,8 @@ %global pypi_name nautilus_open_any_terminal Name: nautilus-open-any-terminal -Version: 0.6.1 -Release: 2%?dist +Version: 0.7.0 +Release: 1%?dist Summary: Context-menu entry for opening other terminal in Nautilus License: GPL-3.0-only URL: https://github.com/Stunkymonkey/nautilus-open-any-terminal diff --git a/anda/desktops/waylands/hyprgraphics/anda.hcl b/anda/desktops/hyprland/hyprgraphics/anda.hcl similarity index 100% rename from anda/desktops/waylands/hyprgraphics/anda.hcl rename to anda/desktops/hyprland/hyprgraphics/anda.hcl diff --git a/anda/desktops/waylands/hyprgraphics/hyprgraphics.nightly.spec b/anda/desktops/hyprland/hyprgraphics/hyprgraphics.nightly.spec similarity index 89% rename from anda/desktops/waylands/hyprgraphics/hyprgraphics.nightly.spec rename to anda/desktops/hyprland/hyprgraphics/hyprgraphics.nightly.spec index 10e40bbe9c..0200ccc85d 100644 --- a/anda/desktops/waylands/hyprgraphics/hyprgraphics.nightly.spec +++ b/anda/desktops/hyprland/hyprgraphics/hyprgraphics.nightly.spec @@ -1,9 +1,9 @@ #? https://src.fedoraproject.org/rpms/hyprgraphics/blob/rawhide/f/hyprgraphics.spec %global realname hyprgraphics -%global ver 0.1.5 -%global commit 157cc52065a104fc3b8fa542ae648b992421d1c7 -%global commit_date 20250821 +%global ver 0.3.0 +%global commit ffc999d980c7b3bca85d3ebd0a9fbadf984a8162 +%global commit_date 20251107 %global shortcommit %{sub %commit 1 7} %bcond libjxl 1 @@ -24,11 +24,13 @@ BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: (pkgconfig(hyprlang) with hyprlang.nightly-devel) BuildRequires: pkgconfig(cairo) +BuildRequires: pkgconfig(pangocairo) BuildRequires: (pkgconfig(hyprutils) with hyprutils.nightly-devel) BuildRequires: pkgconfig(libjpeg) BuildRequires: pkgconfig(libwebp) BuildRequires: pkgconfig(libmagic) BuildRequires: pkgconfig(spng) +BuildRequires: pkgconfig(librsvg-2.0) %if %{with libjxl} BuildRequires: pkgconfig(libjxl) diff --git a/anda/desktops/hyprland/hyprgraphics/update.rhai b/anda/desktops/hyprland/hyprgraphics/update.rhai new file mode 100644 index 0000000000..2ddb0b8570 --- /dev/null +++ b/anda/desktops/hyprland/hyprgraphics/update.rhai @@ -0,0 +1,16 @@ +import "andax/bump_extras.rhai" as bump; +import "andax/spec.rhai" as spec; + +rpm.global("commit", gh_commit("hyprwm/hyprgraphics")); +if rpm.changed() { + rpm.global("ver", gh_rawfile("hyprwm/hyprgraphics", "main", "VERSION")); + rpm.global("commit_date", date()); +} + +// FIXME: should be updbranch but we also need nightly and we are using gh_commit()? +let dir = sub(`/[^/]+$`, "", __script_path); +open_file(`${dir}/VER_hyprlang.txt`, "w").write(bump::madoguchi("hyprlang.nightly", labels.branch)); +if sh("[[ `git status " + dir + " --porcelain` ]] && exit 1 || exit 0", #{}).ctx.rc == 1 { + let rel = spec::get_release(rpm).parse_int(); + rpm.release(rel + 1); +} diff --git a/anda/desktops/waylands/hypridle/anda.hcl b/anda/desktops/hyprland/hypridle/anda.hcl similarity index 100% rename from anda/desktops/waylands/hypridle/anda.hcl rename to anda/desktops/hyprland/hypridle/anda.hcl diff --git a/anda/desktops/waylands/hypridle/ci_setup.rhai b/anda/desktops/hyprland/hypridle/ci_setup.rhai similarity index 100% rename from anda/desktops/waylands/hypridle/ci_setup.rhai rename to anda/desktops/hyprland/hypridle/ci_setup.rhai diff --git a/anda/desktops/waylands/hypridle/hypridle.spec b/anda/desktops/hyprland/hypridle/hypridle.spec similarity index 100% rename from anda/desktops/waylands/hypridle/hypridle.spec rename to anda/desktops/hyprland/hypridle/hypridle.spec diff --git a/anda/desktops/waylands/hypridle/update.rhai b/anda/desktops/hyprland/hypridle/update.rhai similarity index 100% rename from anda/desktops/waylands/hypridle/update.rhai rename to anda/desktops/hyprland/hypridle/update.rhai diff --git a/anda/desktops/waylands/hyprland-protocols/anda.hcl b/anda/desktops/hyprland/hyprland-protocols/anda.hcl similarity index 100% rename from anda/desktops/waylands/hyprland-protocols/anda.hcl rename to anda/desktops/hyprland/hyprland-protocols/anda.hcl diff --git a/anda/desktops/waylands/hyprland-protocols/hyprland-protocols.nightly.spec b/anda/desktops/hyprland/hyprland-protocols/hyprland-protocols.nightly.spec similarity index 90% rename from anda/desktops/waylands/hyprland-protocols/hyprland-protocols.nightly.spec rename to anda/desktops/hyprland/hyprland-protocols/hyprland-protocols.nightly.spec index d142180c7a..3828c20d69 100644 --- a/anda/desktops/waylands/hyprland-protocols/hyprland-protocols.nightly.spec +++ b/anda/desktops/hyprland/hyprland-protocols/hyprland-protocols.nightly.spec @@ -1,9 +1,9 @@ #? https://src.fedoraproject.org/rpms/hyprland-protocols/blob/rawhide/f/hyprland-protocols.spec %global realname hyprland-protocols -%global ver 0.6.4 -%global commit 613878cb6f459c5e323aaafe1e6f388ac8a36330 -%global commit_date 20250604 +%global ver 0.7.0 +%global commit bd153e76f751f150a09328dbdeb5e4fab9d23622 +%global commit_date 20251005 %global shortcommit %{sub %commit 1 7} Name: %realname.nightly diff --git a/anda/desktops/waylands/hyprland-protocols/update.rhai b/anda/desktops/hyprland/hyprland-protocols/update.rhai similarity index 100% rename from anda/desktops/waylands/hyprland-protocols/update.rhai rename to anda/desktops/hyprland/hyprland-protocols/update.rhai diff --git a/anda/desktops/hyprland/hyprlang/VER_hyprutil.txt b/anda/desktops/hyprland/hyprlang/VER_hyprutil.txt new file mode 100644 index 0000000000..7d0807b501 --- /dev/null +++ b/anda/desktops/hyprland/hyprlang/VER_hyprutil.txt @@ -0,0 +1 @@ +0.10.0^20251005git.3df7bde \ No newline at end of file diff --git a/anda/desktops/waylands/hyprlang/anda.hcl b/anda/desktops/hyprland/hyprlang/anda.hcl similarity index 100% rename from anda/desktops/waylands/hyprlang/anda.hcl rename to anda/desktops/hyprland/hyprlang/anda.hcl diff --git a/anda/desktops/waylands/hyprlang/hyprlang.nightly.spec b/anda/desktops/hyprland/hyprlang/hyprlang.nightly.spec similarity index 93% rename from anda/desktops/waylands/hyprlang/hyprlang.nightly.spec rename to anda/desktops/hyprland/hyprlang/hyprlang.nightly.spec index 2725974aea..538d1587a4 100644 --- a/anda/desktops/waylands/hyprlang/hyprlang.nightly.spec +++ b/anda/desktops/hyprland/hyprlang/hyprlang.nightly.spec @@ -2,8 +2,8 @@ %global realname hyprlang %global ver 0.6.3 -%global commit 23f0debd2003f17bd65f851cd3f930cff8a8c809 -%global commit_date 20250728 +%global commit 4dafa28d4f79877d67a7d1a654cddccf8ebf15da +%global commit_date 20250927 %global shortcommit %{sub %commit 1 7} Name: %realname.nightly diff --git a/anda/desktops/hyprland/hyprlang/update.rhai b/anda/desktops/hyprland/hyprlang/update.rhai new file mode 100644 index 0000000000..a08e4157bb --- /dev/null +++ b/anda/desktops/hyprland/hyprlang/update.rhai @@ -0,0 +1,16 @@ +import "andax/bump_extras.rhai" as bump; +import "andax/spec.rhai" as spec; + + // FIXME: should be updbranch but we also need nightly and we are using gh_commit()? + let dir = sub(`/[^/]+$`, "", __script_path); + open_file(`${dir}/VER_hyprutil.txt`, "w").write(bump::madoguchi("hyprutils.nightly", labels.branch)); + if sh("[[ `git status " + dir + " --porcelain` ]] && exit 1 || exit 0", #{}).ctx.rc == 1 { + let rel = spec::get_release(rpm).parse_int(); + rpm.release(rel + 1); + } + +rpm.global("commit", gh_commit("hyprwm/hyprlang")); +if rpm.changed() { + rpm.global("ver", gh_rawfile("hyprwm/hyprlang", "main", "VERSION")); + rpm.global("commit_date", date()); +} diff --git a/anda/desktops/waylands/hyprlock/anda.hcl b/anda/desktops/hyprland/hyprlock/anda.hcl similarity index 100% rename from anda/desktops/waylands/hyprlock/anda.hcl rename to anda/desktops/hyprland/hyprlock/anda.hcl diff --git a/anda/desktops/waylands/hyprlock/ci_setup.rhai b/anda/desktops/hyprland/hyprlock/ci_setup.rhai similarity index 100% rename from anda/desktops/waylands/hyprlock/ci_setup.rhai rename to anda/desktops/hyprland/hyprlock/ci_setup.rhai diff --git a/anda/desktops/waylands/hyprlock/hyprlock.spec b/anda/desktops/hyprland/hyprlock/hyprlock.spec similarity index 98% rename from anda/desktops/waylands/hyprlock/hyprlock.spec rename to anda/desktops/hyprland/hyprlock/hyprlock.spec index a1b43e5187..55f10a9dba 100644 --- a/anda/desktops/waylands/hyprlock/hyprlock.spec +++ b/anda/desktops/hyprland/hyprlock/hyprlock.spec @@ -1,5 +1,5 @@ Name: hyprlock -Version: 0.9.1 +Version: 0.9.2 Release: 1%?dist Summary: Hyprland's GPU-accelerated screen locking utility License: BSD-3-Clause diff --git a/anda/desktops/hyprland/hyprlock/update.rhai b/anda/desktops/hyprland/hyprlock/update.rhai new file mode 100644 index 0000000000..8fac9b39fe --- /dev/null +++ b/anda/desktops/hyprland/hyprlock/update.rhai @@ -0,0 +1,14 @@ +import "andax/bump_extras.rhai" as bump; +import "andax/spec.rhai" as spec; + +let v = gh_rawfile("hyprwm/hyprlock", "main", "VERSION"); +v.trim(); +rpm.version(v); + +// FIXME: should be updbranch but we also need nightly and we are using gh_commit()? +let dir = sub(`/[^/]+$`, "", __script_path); +open_file(`${dir}/VER_hyprgraphics.txt`, "w").write(bump::madoguchi("hyprgraphics.nightly", labels.branch)); +if sh("[[ `git status " + dir + " --porcelain` ]] && exit 1 || exit 0", #{}).ctx.rc == 1 { + let rel = spec::get_release(rpm).parse_int(); + rpm.release(rel + 1); +} diff --git a/anda/desktops/waylands/hyprutils/anda.hcl b/anda/desktops/hyprland/hyprutils/anda.hcl similarity index 100% rename from anda/desktops/waylands/hyprutils/anda.hcl rename to anda/desktops/hyprland/hyprutils/anda.hcl diff --git a/anda/desktops/waylands/hyprutils/hyprutils.nightly.spec b/anda/desktops/hyprland/hyprutils/hyprutils.nightly.spec similarity index 89% rename from anda/desktops/waylands/hyprutils/hyprutils.nightly.spec rename to anda/desktops/hyprland/hyprutils/hyprutils.nightly.spec index 44268ad7bb..e03bc5fcac 100644 --- a/anda/desktops/waylands/hyprutils/hyprutils.nightly.spec +++ b/anda/desktops/hyprland/hyprutils/hyprutils.nightly.spec @@ -1,10 +1,10 @@ #? https://src.fedoraproject.org/rpms/hyprutils/blob/rawhide/f/hyprutils.spec %global realname hyprutils -%global ver 0.8.4 +%global ver 0.10.2 -%global commit b2ae3204845f5f2f79b4703b441252d8ad2ecfd0 -%global commit_date 20250826 +%global commit 671792bcfeaaa58022941ed40c3993cd7f04e38d +%global commit_date 20251119 %global shortcommit %{sub %commit 1 7} Name: %realname.nightly @@ -22,6 +22,7 @@ ExcludeArch: %{ix86} BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: pkgconfig(pixman-1) +BuildRequires: cmake(GTest) Provides: %realname = %evr Conflicts: %realname diff --git a/anda/desktops/waylands/hyprutils/update.rhai b/anda/desktops/hyprland/hyprutils/update.rhai similarity index 100% rename from anda/desktops/waylands/hyprutils/update.rhai rename to anda/desktops/hyprland/hyprutils/update.rhai diff --git a/anda/desktops/waylands/hyprwayland-scanner/anda.hcl b/anda/desktops/hyprland/hyprwayland-scanner/anda.hcl similarity index 100% rename from anda/desktops/waylands/hyprwayland-scanner/anda.hcl rename to anda/desktops/hyprland/hyprwayland-scanner/anda.hcl diff --git a/anda/desktops/waylands/hyprwayland-scanner/hyprwayland-scanner.nightly.spec b/anda/desktops/hyprland/hyprwayland-scanner/hyprwayland-scanner.nightly.spec similarity index 100% rename from anda/desktops/waylands/hyprwayland-scanner/hyprwayland-scanner.nightly.spec rename to anda/desktops/hyprland/hyprwayland-scanner/hyprwayland-scanner.nightly.spec diff --git a/anda/desktops/waylands/hyprwayland-scanner/update.rhai b/anda/desktops/hyprland/hyprwayland-scanner/update.rhai similarity index 100% rename from anda/desktops/waylands/hyprwayland-scanner/update.rhai rename to anda/desktops/hyprland/hyprwayland-scanner/update.rhai diff --git a/anda/desktops/kde/kf6-kio/kf6-kio.spec b/anda/desktops/kde/kf6-kio/kf6-kio.spec index 22da5f23dc..424dbfd81b 100644 --- a/anda/desktops/kde/kf6-kio/kf6-kio.spec +++ b/anda/desktops/kde/kf6-kio/kf6-kio.spec @@ -1,8 +1,8 @@ %global framework kio %global stable_kf6 stable -%global majmin_ver_kf6 6.17 -%global ecm_ver 6.17.0 +%global majmin_ver_kf6 6.20 +%global ecm_ver 6.20.0 %global ecm_rel 1 Name: kf6-%{framework} diff --git a/anda/desktops/kde/kup/anda.hcl b/anda/desktops/kde/kup/anda.hcl new file mode 100644 index 0000000000..49cd5bd690 --- /dev/null +++ b/anda/desktops/kde/kup/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "kup.spec" + } +} diff --git a/anda/desktops/kde/kup/kup.spec b/anda/desktops/kde/kup/kup.spec new file mode 100644 index 0000000000..c98e9a6e54 --- /dev/null +++ b/anda/desktops/kde/kup/kup.spec @@ -0,0 +1,81 @@ +%global _qt_major_version 6 +%global ver kup-0.10.0 +%global commit 130face33a7500b6f881cf8dc7114a2ba2ea1081 + +Name: kup +Version: %(echo %ver | sed -E 's/^kup-//') +Release: 1%?dist +Summary: Backup scheduler for the Plasma desktop +License: GPL-3.0-or-later WITH LicenseRef-KDE-Accepted-GPL +URL: https://invent.kde.org/system/kup +Source0: %url/-/archive/%ver.tar.gz +Packager: madonuko +Requires: (bup or rsync) +Suggests: bup +BuildRequires: cmake extra-cmake-modules +BuildRequires: cmake(Qt%{_qt_major_version}Core) +BuildRequires: cmake(Qt%{_qt_major_version}Widgets) +BuildRequires: cmake(KF%{_qt_major_version}Solid) +BuildRequires: cmake(KF%{_qt_major_version}KIO) +BuildRequires: cmake(KF%{_qt_major_version}IdleTime) +BuildRequires: cmake(KF%{_qt_major_version}I18n) +BuildRequires: cmake(KF%{_qt_major_version}Notifications) +BuildRequires: cmake(KF%{_qt_major_version}CoreAddons) +BuildRequires: cmake(KF%{_qt_major_version}DBusAddons) +BuildRequires: cmake(KF%{_qt_major_version}Config) +BuildRequires: cmake(KF%{_qt_major_version}JobWidgets) +BuildRequires: cmake(KF%{_qt_major_version}WidgetsAddons) +BuildRequires: cmake(KF%{_qt_major_version}XmlGui) +BuildRequires: cmake(KF%{_qt_major_version}KCMUtils) +BuildRequires: cmake(KF%{_qt_major_version}Crash) +BuildRequires: pkgconfig(libgit2) +BuildRequires: cmake(Plasma) +BuildRequires: cmake(Plasma5Support) + +%description +Kup is created for helping people to keep up-to-date backups of their personal files. Connecting a USB hard drive is the primary supported way to store files, but saving files to a server over a network connection is also possible for advanced users. + +When you plug in your external hard drive Kup will automatically start copying your latest changes, but of course it will only do so if you have been active on your computer for some number of hours since the last time you took a backup (and it can of course ask you first, before copying anything). +In general Kup tries to not disturb you needlessly. + +There are two types of backup schemes supported, one which keeps the backup folder completely in sync with what you have on your computer, deleting from the backup any file that you have deleted on your computer etc. The other scheme also keeps older versions of your files in the backup folder. When using this, only the small parts of your files that has actually changed since last backup will be saved and therefore incremental backups are very cheap. This is especially useful if you are working on big files. At the same time it's as easy to access your files as if a complete backup was taken every time; every backup contains a complete version of your directories. Behind the scenes all the content that is actually the same is only stored once. To make this happen Kup runs the backup program "bup" in the background, look at https://github.com/bup/bup for more details. + +%prep +%autosetup -n %name-%ver-%commit +mv LICENSES/* . + +%build +%cmake_kf6 \ + -DQT_MAJOR_VERSION=%{_qt_major_version} \ + -DCMAKE_INSTALL_PREFIX=%{_prefix} \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_TESTING=OFF \ + -DKDE_INSTALL_USE_QT_SYS_PATHS=ON +%cmake_build + +%install +%cmake_install + +%find_lang kup + +%files -f kup.lang +%doc README.md +%license GPL-2.0-only.txt GPL-2.0-or-later.txt GPL-3.0-only.txt LicenseRef-KDE-Accepted-GPL.txt +%_sysconfdir/xdg/autostart/kup-daemon.desktop +%_bindir/kup-daemon +%_bindir/kup-filedigger +%_bindir/kup-purger +%_kf6_plugindir/kio/kio_bup.so +%_qt6_plugindir/plasma/kcms/systemsettings_qwidgets/kcm_kup.so +%_qt6_plugindir/plasma5support/dataengine/plasma_engine_kup.so +%_datadir/applications/kcm_kup.desktop +%_iconsdir/hicolor/scalable/apps/kup.svg +%_datadir/knotifications6/kupdaemon.notifyrc +%_metainfodir/org.kde.kup.appdata.xml +%_metainfodir/org.kde.kupapplet.appdata.xml +%_datadir/plasma/plasmoids/org.kde.kupapplet/contents/ui/FullRepresentation.qml +%_datadir/plasma/plasmoids/org.kde.kupapplet/contents/ui/main.qml +%_datadir/plasma/plasmoids/org.kde.kupapplet/metadata.json +%_datadir/plasma5support/services/kupdaemonservice.operations +%_datadir/plasma5support/services/kupservice.operations +%_datadir/qlogging-categories6/kup.categories diff --git a/anda/desktops/kde/kup/update.rhai b/anda/desktops/kde/kup/update.rhai new file mode 100644 index 0000000000..5a4c3aa392 --- /dev/null +++ b/anda/desktops/kde/kup/update.rhai @@ -0,0 +1,5 @@ +let v = gitlab_tag("invent.kde.org", "445"); +rpm.global("ver", v); +if rpm.changed() { + rpm.global("commit", get(`https://invent.kde.org/api/v4/projects/445/repository/tags/${v}`).json().commit.id); +} diff --git a/anda/desktops/kde/lightdm-kde-greeter/lightdm-kde-greeter.spec b/anda/desktops/kde/lightdm-kde-greeter/lightdm-kde-greeter.spec index adeb1f8bb2..6eb53dbff7 100644 --- a/anda/desktops/kde/lightdm-kde-greeter/lightdm-kde-greeter.spec +++ b/anda/desktops/kde/lightdm-kde-greeter/lightdm-kde-greeter.spec @@ -1,7 +1,7 @@ -%global commit 31d29530ad834c1bfb70ed43f9395a549fbace56 +%global commit 7f92a0f5aab4936f24f5a47a717a7444af1d3f42 Name: lightdm-kde-greeter -Version: 6.0.3 +Version: 6.0.5 Release: 1%?dist Summary: Login screen using the LightDM framework License: GPL-3.0-or-later diff --git a/anda/desktops/lomiri-unity/lomiri-api/lomiri-api.spec b/anda/desktops/lomiri-unity/lomiri-api/lomiri-api.spec index 16c7b54028..56938c53f5 100644 --- a/anda/desktops/lomiri-unity/lomiri-api/lomiri-api.spec +++ b/anda/desktops/lomiri-unity/lomiri-api/lomiri-api.spec @@ -3,7 +3,7 @@ %forgemeta Name: lomiri-api -Version: 0.2.2 +Version: 0.2.3 Release: 1%?dist Summary: API for Lomiri diff --git a/anda/desktops/lomiri-unity/lomiri-download-manager/lomiri-download-manager.spec b/anda/desktops/lomiri-unity/lomiri-download-manager/lomiri-download-manager.spec index ef7f41d87c..99efc489e5 100644 --- a/anda/desktops/lomiri-unity/lomiri-download-manager/lomiri-download-manager.spec +++ b/anda/desktops/lomiri-unity/lomiri-download-manager/lomiri-download-manager.spec @@ -1,9 +1,9 @@ %global forgeurl https://gitlab.com/ubports/development/core/lomiri-download-manager -%global commit 7f4c49f125209235b9a808a6e72d1fdfdd2b01ca +%global commit 4ceb67059014b9b7e0e15f860297fe60b95903a2 %forgemeta Name: lomiri-download-manager -Version: 0.2.1 +Version: 0.2.2 Release: 1%?dist Summary: Upload Download Manager for Lomiri License: LGPLv3 diff --git a/anda/desktops/lomiri-unity/lomiri-indicator-network/lomiri-indicator-network.spec b/anda/desktops/lomiri-unity/lomiri-indicator-network/lomiri-indicator-network.spec index 437bf29862..d677e36c08 100644 --- a/anda/desktops/lomiri-unity/lomiri-indicator-network/lomiri-indicator-network.spec +++ b/anda/desktops/lomiri-unity/lomiri-indicator-network/lomiri-indicator-network.spec @@ -1,9 +1,9 @@ %global forgeurl https://gitlab.com/ubports/development/core/lomiri-indicator-network -%global commit 4aa16a3674bf513995cf07fffaf700d007e726d8 +%global commit ee3fddcc45a8322938aacc0effd4383b29ebfaf6 %forgemeta Name: lomiri-indicator-network -Version: 1.1.1 +Version: 1.1.2 Release: 1%?dist Summary: The Network indicator for Ubuntu Touch License: GPL-3.0 AND LGPL-3.0 @@ -65,7 +65,7 @@ The %{name}-doc package contains documentation files for %{name}. %files -f %{name}.lang %doc README.md %license COPYING COPYING.LGPL -%config /usr/etc/xdg/autostart/lomiri-indicator-network.desktop +%config /etc/xdg/autostart/lomiri-indicator-network.desktop %{_userunitdir}/*.service %{_libdir}/liblomiri-connectivity-qt1.so.* %dir %{_qt5_qmldir}/Lomiri/Connectivity diff --git a/anda/desktops/lomiri-unity/lomiri-schemas/lomiri-schemas.spec b/anda/desktops/lomiri-unity/lomiri-schemas/lomiri-schemas.spec index 89c169fe64..94b202768f 100644 --- a/anda/desktops/lomiri-unity/lomiri-schemas/lomiri-schemas.spec +++ b/anda/desktops/lomiri-unity/lomiri-schemas/lomiri-schemas.spec @@ -1,9 +1,9 @@ %global forgeurl https://gitlab.com/ubports/development/core/lomiri-schemas -%global commit 139e6090d18040270e942429cf08f6b48a67b0cc +%global commit c5d57303dfb0f9641c9c0ce572905b3eedb99bd9 %forgemeta Name: lomiri-schemas -Version: 0.1.8 +Version: 0.1.9 Release: 1%?dist Summary: Configuration schemas for lomiri License: LGPL-2.0-or-later diff --git a/anda/desktops/lomiri-unity/lomiri-settings-components/lomiri-settings-components.spec b/anda/desktops/lomiri-unity/lomiri-settings-components/lomiri-settings-components.spec index 16a5f90fe9..5eb61ebeb3 100644 --- a/anda/desktops/lomiri-unity/lomiri-settings-components/lomiri-settings-components.spec +++ b/anda/desktops/lomiri-unity/lomiri-settings-components/lomiri-settings-components.spec @@ -1,9 +1,9 @@ %global forgeurl https://gitlab.com/ubports/development/core/lomiri-settings-components -%global commit 8be505f0a54e9803adcaa20fefe334b3c3b7d4e7 +%global commit 91a0a1f94b90d8e3371ab47b769bcd058ac57a74 %forgemeta Name: lomiri-settings-components -Version: 1.1.2 +Version: 1.1.3 Release: 1%?dist Summary: The system settings components for Lomiri License: GPLv3 AND LGPLv3 diff --git a/anda/desktops/lomiri-unity/lomiri-system-settings/lomiri-system-settings.spec b/anda/desktops/lomiri-unity/lomiri-system-settings/lomiri-system-settings.spec index 7d4c10600d..ca99bc2387 100644 --- a/anda/desktops/lomiri-unity/lomiri-system-settings/lomiri-system-settings.spec +++ b/anda/desktops/lomiri-unity/lomiri-system-settings/lomiri-system-settings.spec @@ -1,5 +1,5 @@ %global forgeurl https://gitlab.com/ubports/development/core/lomiri-system-settings -%global commit 392d3cda1731337264bd63ce16324c7ac10d9992 +%global commit c3af1ac5564c1f034dbea120ccf1a46a36977495 %forgemeta Name: lomiri-system-settings diff --git a/anda/desktops/mangowc/anda.hcl b/anda/desktops/mangowc/anda.hcl new file mode 100644 index 0000000000..f3c97fc686 --- /dev/null +++ b/anda/desktops/mangowc/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "mangowc.spec" + } +} diff --git a/anda/desktops/mangowc/mangowc.spec b/anda/desktops/mangowc/mangowc.spec new file mode 100644 index 0000000000..85c78a554f --- /dev/null +++ b/anda/desktops/mangowc/mangowc.spec @@ -0,0 +1,52 @@ +Name: mangowc +Version: 0.10.5 +Release: 1%?dist +Summary: wayland compositor base wlroots and scenefx (dwm but wayland) +License: GPL-3.0 +Packager: metcya +URL: https://github.com/DreamMaoMao/mangowc +Source: %{url}/archive/%{version}.tar.gz + +BuildRequires: meson +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: pkgconfig(xcb) +BuildRequires: pkgconfig(xcb-icccm) +BuildRequires: pkgconfig(wayland-protocols) +BuildRequires: pkgconfig(wayland-server) +BuildRequires: pkgconfig(wlroots-0.19) +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: pkgconfig(libinput) +BuildRequires: pkgconfig(wayland-client) +BuildRequires: pkgconfig(libpcre2-8) +BuildRequires: pkgconfig(scenefx-0.4) + +%description +MangoWC is a lightweight, high-performance Wayland compositor built on dwl, designed for speed, flexibility, and a modern, customizable desktop experience. + +%prep +%autosetup + +%build +%meson +%meson_build + +%install +%meson_install + +%files +%doc README.md +%license LICENSE +%license LICENSE.wlroots +%license LICENSE.tinywl +%license LICENSE.sway +%license LICENSE.dwm +%license LICENSE.dwl +%{_bindir}/mango +%{_bindir}/mmsg +%{_sysconfdir}/mango/config.conf +%{_datadir}/wayland-sessions/mango.desktop + +%changelog +* Wed Nov 12 2025 metcya +- Package mangowc diff --git a/anda/desktops/mangowc/update.rhai b/anda/desktops/mangowc/update.rhai new file mode 100644 index 0000000000..e329151a80 --- /dev/null +++ b/anda/desktops/mangowc/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("DreamMaoMao/mangowc")); diff --git a/anda/desktops/sway/swayosd/anda.hcl b/anda/desktops/sway/swayosd/anda.hcl new file mode 100644 index 0000000000..f12f991705 --- /dev/null +++ b/anda/desktops/sway/swayosd/anda.hcl @@ -0,0 +1,8 @@ +project pkg { + rpm { + spec = "swayosd.spec" + } + labels { + mock = 1 + } +} diff --git a/anda/desktops/sway/swayosd/swayosd.spec b/anda/desktops/sway/swayosd/swayosd.spec new file mode 100644 index 0000000000..f7ab47b473 --- /dev/null +++ b/anda/desktops/sway/swayosd/swayosd.spec @@ -0,0 +1,85 @@ +Name: SwayOSD +Version: 0.2.1 +Release: 2%?dist +Summary: A GTK based on screen display for keyboard shortcuts like caps-lock and volume +License: GPL-3.0-only +URL: https://github.com/ErikReider/SwayOSD +Source0: %{url}/archive/refs/tags/v%{version}.tar.gz + +Packager: Owen Zimmerman + +BuildRequires: meson +BuildRequires: ninja-build +BuildRequires: gtk3-devel +BuildRequires: gcc +BuildRequires: systemd-rpm-macros +BuildRequires: rust +BuildRequires: cargo +BuildRequires: sassc +BuildRequires: libevdev-devel +BuildRequires: gtk4-devel +BuildRequires: gtk4-layer-shell-devel +BuildRequires: pulseaudio-libs-devel +BuildRequires: libinput-devel +BuildRequires: louvre + +Requires: cairo +Requires: gtk4 +Requires: cairo +Requires: dbus +Requires: gdk-pixbuf2 +Requires: glib2 +Requires: glibc +Requires: gtk4-layer-shell +Requires: libevdev +Requires: libinput +Requires: pulseaudio-libs +Requires: pango +Requires: systemd-libs + +Provides: swayosd + +%description +%{summary}. + +%prep +%autosetup -n SwayOSD-%{version} + +%build +%meson +%meson_build + +%install +%meson_install + +%post +%systemd_post swayosd-libinput-backend.service +%systemd_post org.erikreider.swayosd.service + +%preun +%systemd_preun swayosd-libinput-backend.service +%systemd_preun org.erikreider.swayosd.service + +%postun +%systemd_postun_with_restart swayosd-libinput-backend.service +%systemd_postun_with_restart org.erikreider.swayosd.service + +%files +%doc README.md +%license LICENSE +%{_bindir}/swayosd-client +%{_bindir}/swayosd-server +%{_bindir}/swayosd-libinput-backend +%config(noreplace) %{_sysconfdir}/xdg/swayosd/backend.toml +%config(noreplace) %{_sysconfdir}/xdg/swayosd/config.toml +%config(noreplace) %{_sysconfdir}/xdg/swayosd/style.css +%{_usr}/lib64/systemd/system/swayosd-libinput-backend.service +%{_usr}/lib64/udev/rules.d/99-swayosd.rules +%{_datadir}/dbus-1/system-services/org.erikreider.swayosd.service +%{_datadir}/dbus-1/system.d/org.erikreider.swayosd.conf +%{_datadir}/polkit-1/actions/org.erikreider.swayosd.policy +%{_datadir}/polkit-1/rules.d/org.erikreider.swayosd.rules + +%changelog +* Thu Nov 13 2025 Owen Zimmerman +- Initial commit diff --git a/anda/desktops/sway/swayosd/update.rhai b/anda/desktops/sway/swayosd/update.rhai new file mode 100644 index 0000000000..a8632d0fb6 --- /dev/null +++ b/anda/desktops/sway/swayosd/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("ErikReider/SwayOSD")); diff --git a/anda/desktops/waylands/cliphist/golang-github-sentriz-cliphist.spec b/anda/desktops/waylands/cliphist/golang-github-sentriz-cliphist.spec index 42e71bcdaf..39dc9c3779 100644 --- a/anda/desktops/waylands/cliphist/golang-github-sentriz-cliphist.spec +++ b/anda/desktops/waylands/cliphist/golang-github-sentriz-cliphist.spec @@ -12,7 +12,7 @@ # https://github.com/sentriz/cliphist %global goipath github.com/sentriz/cliphist -Version: 0.6.1 +Version: 0.7.0 %gometa -f @@ -23,7 +23,7 @@ Wayland clipboard manager with support for multimedia.} %global godocs CHANGELOG.md readme.md version.txt Name: cliphist -Release: 3%?dist +Release: 1%?dist Summary: Wayland clipboard manager with support for multimedia Provides: golang-github-sentriz-cliphist = %version-%release Obsoletes: golang-github-sentriz-cliphist < 0.6.1-2 diff --git a/anda/desktops/waylands/hyprgraphics/update.rhai b/anda/desktops/waylands/hyprgraphics/update.rhai deleted file mode 100644 index 6a9cc301c7..0000000000 --- a/anda/desktops/waylands/hyprgraphics/update.rhai +++ /dev/null @@ -1,5 +0,0 @@ -rpm.global("commit", gh_commit("hyprwm/hyprgraphics")); -if rpm.changed() { - rpm.global("ver", gh_rawfile("hyprwm/hyprgraphics", "main", "VERSION")); - rpm.global("commit_date", date()); -} diff --git a/anda/desktops/waylands/hyprlang/update.rhai b/anda/desktops/waylands/hyprlang/update.rhai deleted file mode 100644 index bc8ee477cb..0000000000 --- a/anda/desktops/waylands/hyprlang/update.rhai +++ /dev/null @@ -1,5 +0,0 @@ -rpm.global("commit", gh_commit("hyprwm/hyprlang")); -if rpm.changed() { - rpm.global("ver", gh_rawfile("hyprwm/hyprlang", "main", "VERSION")); - rpm.global("commit_date", date()); -} diff --git a/anda/desktops/waylands/hyprlock/update.rhai b/anda/desktops/waylands/hyprlock/update.rhai deleted file mode 100644 index 05b9c25c0c..0000000000 --- a/anda/desktops/waylands/hyprlock/update.rhai +++ /dev/null @@ -1,3 +0,0 @@ -let v = gh_rawfile("hyprwm/hyprlock", "main", "VERSION"); -v.trim(); -rpm.version(v); diff --git a/anda/desktops/waylands/matugen/rust-matugen.spec b/anda/desktops/waylands/matugen/rust-matugen.spec index 3c808bd03a..d662ac89c4 100644 --- a/anda/desktops/waylands/matugen/rust-matugen.spec +++ b/anda/desktops/waylands/matugen/rust-matugen.spec @@ -2,8 +2,8 @@ %global crate matugen Name: rust-matugen -Version: 2.4.1 -Release: 1%{?dist} +Version: 3.0.0 +Release: 1%?dist Summary: Material you color generation tool with templates License: GPL-2.0 diff --git a/anda/desktops/waylands/niri-taskbar/anda.hcl b/anda/desktops/waylands/niri-taskbar/anda.hcl new file mode 100644 index 0000000000..8e4334b96d --- /dev/null +++ b/anda/desktops/waylands/niri-taskbar/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "rust-niri-taskbar.spec" + } +} diff --git a/anda/desktops/waylands/niri-taskbar/niri-taskbar-fix-metadata-auto.diff b/anda/desktops/waylands/niri-taskbar/niri-taskbar-fix-metadata-auto.diff new file mode 100644 index 0000000000..49e8aba9c5 --- /dev/null +++ b/anda/desktops/waylands/niri-taskbar/niri-taskbar-fix-metadata-auto.diff @@ -0,0 +1,16 @@ +--- niri-taskbar-0.3.0+niri.25.08/Cargo.toml 1970-01-01T00:00:01+00:00 ++++ niri-taskbar-0.3.0+niri.25.08/Cargo.toml 2025-09-04T15:36:25.545774+00:00 +@@ -13,7 +13,7 @@ + edition = "2024" + rust-version = "1.87.0" + name = "niri-taskbar" +-version = "0.2.0+niri.25.05" ++version = "0.3.0" + build = false + autolib = false + autobins = false +@@ -79,3 +79,4 @@ + + [dependencies.zbus] + version = "5.5.0" ++ diff --git a/anda/desktops/waylands/niri-taskbar/rust-niri-taskbar.spec b/anda/desktops/waylands/niri-taskbar/rust-niri-taskbar.spec new file mode 100644 index 0000000000..a2e53fc3f3 --- /dev/null +++ b/anda/desktops/waylands/niri-taskbar/rust-niri-taskbar.spec @@ -0,0 +1,69 @@ +# Generated by rust2rpm 27 +%bcond check 0 + +%global crate niri-taskbar +%global crate_version 0.2.0+niri.25.05 + +Name: rust-niri-taskbar +Version: %(echo %crate_version | sed 's/\+.*//g') +Release: 1%?dist +Summary: Niri taskbar module for Waybar + +License: MIT +URL: https://crates.io/crates/niri-taskbar +Source: %{crates_source %{crate} %{crate_version}} +# Automatically generated patch to strip dependencies and normalize metadata +Patch: niri-taskbar-fix-metadata-auto.diff + +BuildRequires: cargo-rpm-macros >= 24 +BuildRequires: pkgconfig(cairo-gobject) +BuildRequires: pkgconfig(cairo) +BuildRequires: pkgconfig(gdk-pixbuf-2.0) +BuildRequires: pkgconfig(gtk4) +BuildRequires: pkgconfig(atk) +BuildRequires: pkgconfig(gdk-3.0) + +%global _description %{expand: +Niri taskbar module for Waybar.} + +%description %{_description} + +%package -n waybar-%{crate} +Summary: %{summary} +License: ((MIT OR Apache-2.0) AND Unicode-3.0) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND (BSD-2-Clause OR Apache-2.0 OR MIT) AND GPL-3.0-or-later AND MIT AND (MIT OR Apache-2.0) AND (MIT OR Apache-2.0 OR LGPL-2.1-or-later) AND MPL-2.0 AND (Unlicense OR MIT) +# LICENSE.dependencies contains a full license breakdown + +%description -n waybar-%{crate} %{_description} + +%files -n waybar-%{crate} +%license LICENSE +%license LICENSE.dependencies +%doc README.md +%doc USAGE +%_libdir/waybar/libniri_taskbar.so + +%prep +%autosetup -n %{crate}-%{crate_version} -p1 +%cargo_prep_online +cat< USAGE +The module is installed to: + %_libdir/waybar/libniri_taskbar.so + +See https://crates.io/crates/niri-taskbar#configuration for more info. +EOF + +%build +%{cargo_license_summary_online} +%{cargo_license_online} > LICENSE.dependencies +%cargo_build + +%install +install -Dm755 target/rpm/libniri_taskbar.so -t %buildroot%_libdir/waybar/ + +%posttrans +[ $1 -eq 1 ] && cat %_pkgdocdir/USAGE + +%if %{with check} +%check +%cargo_test +%endif diff --git a/anda/desktops/waylands/niri-taskbar/update.rhai b/anda/desktops/waylands/niri-taskbar/update.rhai new file mode 100644 index 0000000000..fb75cb0244 --- /dev/null +++ b/anda/desktops/waylands/niri-taskbar/update.rhai @@ -0,0 +1,2 @@ +terminate(); +rpm.global("crate_version", crates("niri-taskbar")); diff --git a/anda/desktops/waylands/sway-audio-idle-inhibit/anda.hcl b/anda/desktops/waylands/sway-audio-idle-inhibit/anda.hcl new file mode 100644 index 0000000000..342689b332 --- /dev/null +++ b/anda/desktops/waylands/sway-audio-idle-inhibit/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "sway-audio-idle-inhibit.spec" + } +} diff --git a/anda/desktops/waylands/sway-audio-idle-inhibit/sway-audio-idle-inhibit.spec b/anda/desktops/waylands/sway-audio-idle-inhibit/sway-audio-idle-inhibit.spec new file mode 100644 index 0000000000..c33d4645fd --- /dev/null +++ b/anda/desktops/waylands/sway-audio-idle-inhibit/sway-audio-idle-inhibit.spec @@ -0,0 +1,28 @@ +Name: sway-audio-idle-inhibit +Version: 0.2.0 +Release: 1%?dist +Summary: Prevents swayidle/hypridle from sleeping while any application is outputting or receiving audio +License: GPL-3.0-only +URL: https://github.com/ErikReider/SwayAudioIdleInhibit +Source0: %url/archive/refs/tags/v%version.tar.gz +BuildRequires: meson gcc-c++ +BuildRequires: pkgconfig(libpulse) +BuildRequires: pkgconfig(libsystemd) + +%description +%summary. + +%prep +%autosetup -n SwayAudioIdleInhibit-%version + +%build +%meson -Dlogind-provider=systemd +%meson_build + +%install +%meson_install + +%files +%doc README.md +%license LICENSE +%_bindir/sway-audio-idle-inhibit diff --git a/anda/desktops/waylands/sway-audio-idle-inhibit/update.rhai b/anda/desktops/waylands/sway-audio-idle-inhibit/update.rhai new file mode 100644 index 0000000000..659513fa35 --- /dev/null +++ b/anda/desktops/waylands/sway-audio-idle-inhibit/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("ErikReider/SwayAudioIdleInhibit")); diff --git a/anda/desktops/waylands/swww/swww.spec b/anda/desktops/waylands/swww/swww.spec index 31a49d129b..5eeb6cd0b1 100644 --- a/anda/desktops/waylands/swww/swww.spec +++ b/anda/desktops/waylands/swww/swww.spec @@ -1,5 +1,5 @@ Name: swww -Version: 0.10.3 +Version: 0.11.2 Release: 1%?dist Summary: Wallpaper daemon for Wayland SourceLicense: GPL-3.0-only diff --git a/anda/desktops/waylands/walker/walker.spec b/anda/desktops/waylands/walker/walker.spec index 938ca1bf99..befec3b34f 100644 --- a/anda/desktops/waylands/walker/walker.spec +++ b/anda/desktops/waylands/walker/walker.spec @@ -4,7 +4,7 @@ # prevent library files from being installed %global cargo_install_lib 0 -%global upstream_version v1.0.0-beta-22 +%global upstream_version v2.11.1 %global ver %{sub %upstream_version 2} Name: walker diff --git a/anda/desktops/waypaper/anda.hcl b/anda/desktops/waypaper/anda.hcl new file mode 100644 index 0000000000..b41682ebbe --- /dev/null +++ b/anda/desktops/waypaper/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "waypaper.spec" + } +} diff --git a/anda/desktops/waypaper/update.rhai b/anda/desktops/waypaper/update.rhai new file mode 100644 index 0000000000..e9b7275f2a --- /dev/null +++ b/anda/desktops/waypaper/update.rhai @@ -0,0 +1 @@ +rpm.version(pypi("waypaper")); diff --git a/anda/desktops/waypaper/waypaper.spec b/anda/desktops/waypaper/waypaper.spec new file mode 100644 index 0000000000..2b6b047d72 --- /dev/null +++ b/anda/desktops/waypaper/waypaper.spec @@ -0,0 +1,56 @@ +%global pypi_name waypaper +%global _desc GUI wallpaper manager for Wayland and Xorg Linux systems. + +%define _python_dist_allow_version_zero 1 + +Name: python-%{pypi_name} +Version: 2.7 +Release: 1%?dist +Summary: GUI wallpaper manager for Wayland and Xorg Linux systems +License: GPL-3.0-only +URL: https://github.com/anufrievroman/waypaper +Source0: %url/archive/refs/tags/%version.tar.gz +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-wheel +BuildRequires: python3-pip +BuildRequires: python3-setuptools +BuildRequires: python3-setuptools_scm + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: waypaper +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n waypaper-%version + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files waypaper + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.md +%license LICENSE +%{_bindir}/waypaper +%{_datadir}/applications/waypaper.desktop +%{_datadir}/icons/hicolor/scalable/apps/waypaper.svg +%{_mandir}/man1/waypaper.1.gz +%dnl %python3_sitelib/__pycache__/*.cpython-*.pyc +%dnl %python3_sitelib/waypaper/subcommands/__pycache__/*.cpython-*.pyc + +%changelog +* Sun Nov 09 2025 Owen Zimmerman +- Initial commit diff --git a/anda/devs/android-studio/stable/android-studio.spec b/anda/devs/android-studio/stable/android-studio.spec index 5b038070c7..c390054a19 100644 --- a/anda/devs/android-studio/stable/android-studio.spec +++ b/anda/devs/android-studio/stable/android-studio.spec @@ -4,8 +4,8 @@ %global __requires_exclude ^libaaudio\\.so.*|^libandroid\\.so.*|^libmediandk\\.so.*|^liblog\\.so.*|^libc\\.so.*|^libm\\.so.*|^libdl\\.so.*|^libcrypt\\.so.*|^libstdc\\+\\+\\.so.*|^libncursesw\\.so.*|^libtinfo\\.so.*|^libnsl\\.so.*|^libpanelw\\.so.*$ Name: android-studio -Version: 2025.1.2.13 -Release: 2%?dist +Version: 2025.2.1.8 +Release: 1%?dist Summary: Official IDE for Android development License: Apache-2.0 Packager: like-engels diff --git a/anda/devs/asdf/anda.hcl b/anda/devs/asdf/anda.hcl new file mode 100644 index 0000000000..57eb2ef3e3 --- /dev/null +++ b/anda/devs/asdf/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "asdf.spec" + } +} diff --git a/anda/devs/asdf/asdf.spec b/anda/devs/asdf/asdf.spec new file mode 100644 index 0000000000..2185fbc043 --- /dev/null +++ b/anda/devs/asdf/asdf.spec @@ -0,0 +1,81 @@ +# Generated by go2rpm 1.18.0 +%bcond check 0 +%bcond bootstrap 0 + +%if %{with bootstrap} +%global debug_package %{nil} +%endif + +%if %{with bootstrap} +%global __requires_exclude %{?__requires_exclude:%{__requires_exclude}|}^golang\\(.*\\)$ +%endif + +# https://github.com/asdf-vm/asdf +%global goipath github.com/asdf-vm/asdf +Version: 0.18.0 + +%gometa -f + +%global common_description %{expand: +Extendable version manager with support for Ruby, Node.js, Elixir, Erlang & +more.} + +%global golicenses LICENSE +%global godocs docs CHANGELOG.md CONTRIBUTING.md README.md\\\ + SECURITY.md ballad-of-asdf.md help.txt version.txt + +Name: asdf +Release: %autorelease +Summary: Extendable version manager with support for Ruby, Node.js, Elixir, Erlang & more + +License: MIT +%dnl URL: %{gourl} +URL: https://asdf-vm.com +Source: %{gosource} +Packager: madonuko +Provides: golang-github-asdf-vm = %evr + +%description %{common_description} + +%gopkg + +%prep +%goprep -A +%autopatch -p1 + +%if %{without bootstrap} +#generate_buildrequires +#go_generate_buildrequires +%endif + +%if %{without bootstrap} +%build +%define gomodulesmode GO111MODULE=on +for cmd in cmd/* ; do + %gobuild -o %{gobuilddir}/bin/$(basename $cmd) %{goipath}/$cmd +done +%endif + +%install +%gopkginstall +%if %{without bootstrap} +install -m 0755 -vd %{buildroot}%{_bindir} +install -m 0755 -vp %{gobuilddir}/bin/* %{buildroot}%{_bindir}/ +%endif + +%if %{without bootstrap} +%if %{with check} +%check +%gocheck +%endif +%endif + +%if %{without bootstrap} +%files +%license LICENSE +%doc docs CHANGELOG.md CONTRIBUTING.md README.md SECURITY.md ballad-of-asdf.md +%doc help.txt version.txt +%{_bindir}/asdf +%endif + +%gopkgfiles diff --git a/anda/devs/asdf/update.rhai b/anda/devs/asdf/update.rhai new file mode 100644 index 0000000000..8f29d778ec --- /dev/null +++ b/anda/devs/asdf/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("asdf-vm/asdf")); diff --git a/anda/devs/atac/atac.spec b/anda/devs/atac/atac.spec index e9ae8387e3..872864b2d8 100644 --- a/anda/devs/atac/atac.spec +++ b/anda/devs/atac/atac.spec @@ -6,7 +6,7 @@ %global __brp_mangle_shebangs %{nil} Name: atac -Version: 0.20.2 +Version: 0.22.1 Release: 1%?dist Summary: Arguably a Terminal API Client diff --git a/anda/devs/backport/nodejs-backport.spec b/anda/devs/backport/nodejs-backport.spec index e17293783a..f51ff4ea26 100644 --- a/anda/devs/backport/nodejs-backport.spec +++ b/anda/devs/backport/nodejs-backport.spec @@ -3,7 +3,7 @@ %bcond test 1 Name: node-%{module} -Version: 10.0.2 +Version: 10.2.0 Release: 1%?dist Summary: Backport GitHub commits SourceLicense: Apache-2.0 diff --git a/anda/devs/bun/bun-bin.spec b/anda/devs/bun/bun-bin.spec index 61e4bac14f..3f7f112921 100644 --- a/anda/devs/bun/bun-bin.spec +++ b/anda/devs/bun/bun-bin.spec @@ -5,14 +5,17 @@ %global a aarch64 %endif +%global appid sh.oven.bun + Name: bun-bin -Version: 1.2.21 -Release: 1%?dist +Version: 1.3.2 +Release: 3%?dist Summary: Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one License: MIT URL: https://bun.sh Source0: https://github.com/oven-sh/bun/releases/download/bun-v%version/bun-linux-%a.zip -BuildRequires: unzip +Source1: sh.oven.bun.metainfo.xml +BuildRequires: unzip anda-srpm-macros terra-appstream-helper %description %summary. @@ -57,7 +60,10 @@ install -Dm644 bun.bash -t %buildroot%bash_completions_dir install -Dm644 bun.fish -t %buildroot%fish_completions_dir ln -s bun %buildroot%_bindir/bunx +%terra_appstream -o %{SOURCE1} + %files %license LICENSE %_bindir/bun %_bindir/bunx +%{_datadir}/metainfo/sh.oven.bun.metainfo.xml diff --git a/anda/devs/bun/sh.oven.bun.metainfo.xml b/anda/devs/bun/sh.oven.bun.metainfo.xml new file mode 100644 index 0000000000..f8aa2cda17 --- /dev/null +++ b/anda/devs/bun/sh.oven.bun.metainfo.xml @@ -0,0 +1,26 @@ + + + sh.oven.bun + CC0-1.0 + MIT + applications-development + + Bun + Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one + + +

+ Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one +

+
+ https://bun.sh + + text/javascript + text/typescript + + + + + + +
diff --git a/anda/devs/codium/codium.spec b/anda/devs/codium/codium.spec index 3d15d4b74c..ec1c49bf8e 100644 --- a/anda/devs/codium/codium.spec +++ b/anda/devs/codium/codium.spec @@ -12,7 +12,7 @@ %endif Name: codium -Version: 1.103.25610 +Version: 1.105.17075 Release: 1%?dist Summary: Code editing. Redefined. License: MIT diff --git a/anda/devs/deno/anda.hcl b/anda/devs/deno/anda.hcl new file mode 100644 index 0000000000..6ccf5d1146 --- /dev/null +++ b/anda/devs/deno/anda.hcl @@ -0,0 +1,8 @@ +project pkg { + rpm { + spec = "rust-deno.spec" + } + labels { + large = 1 + } +} diff --git a/anda/devs/deno/deno-fix-metadata-auto.diff b/anda/devs/deno/deno-fix-metadata-auto.diff new file mode 100644 index 0000000000..b7ea613656 --- /dev/null +++ b/anda/devs/deno/deno-fix-metadata-auto.diff @@ -0,0 +1,27 @@ +--- deno-2.5.6/Cargo.toml 1970-01-01T00:00:01+00:00 ++++ deno-2.5.6/Cargo.toml 2025-11-02T08:06:51.091942+00:00 +@@ -654,24 +654,3 @@ + [target."cfg(unix)".dependencies.shell-escape] + version = "=0.1.5" + +-[target."cfg(windows)".dependencies.deno_subprocess_windows] +-version = "0.16.0" +- +-[target."cfg(windows)".dependencies.winapi] +-version = "=0.3.9" +-features = [ +- "knownfolders", +- "mswsock", +- "objbase", +- "shlobj", +- "tlhelp32", +- "winbase", +- "winerror", +- "winsock2", +-] +- +-[target."cfg(windows)".build-dependencies.winapi] +-version = "=0.3.9" +- +-[target."cfg(windows)".build-dependencies.winres] +-version = "=0.1.12" diff --git a/anda/devs/deno/gcc-wrapper.sh b/anda/devs/deno/gcc-wrapper.sh new file mode 100755 index 0000000000..f28bf41905 --- /dev/null +++ b/anda/devs/deno/gcc-wrapper.sh @@ -0,0 +1,6 @@ +#!/bin/bash +if [[ " $@ " =~ "jitterentropy" ]]; then + exec gcc $(echo "$@" | sed 's/-O[0-9s]//g') +else + exec gcc "$@" +fi diff --git a/anda/devs/deno/land.deno.deno.metainfo.xml b/anda/devs/deno/land.deno.deno.metainfo.xml new file mode 100644 index 0000000000..c5d0ed7baf --- /dev/null +++ b/anda/devs/deno/land.deno.deno.metainfo.xml @@ -0,0 +1,26 @@ + + + land.deno.deno + CC0-1.0 + MIT + + Deno + A modern runtime for JavaScript and TypeScript. + + +

+ Deno (/ˈdiːnoʊ/, pronounced dee-no) is a JavaScript, TypeScript, and WebAssembly runtime with secure defaults and a great developer experience. + It's built on V8, Rust, and Tokio. +

+
+ https://deno.com + + text/javascript + text/typescript + + + + + + +
diff --git a/anda/devs/deno/rust-deno.spec b/anda/devs/deno/rust-deno.spec new file mode 100644 index 0000000000..69f9c8a002 --- /dev/null +++ b/anda/devs/deno/rust-deno.spec @@ -0,0 +1,74 @@ +%undefine __brp_mangle_shebangs +# Generated by rust2rpm 27 +%bcond check 0 + +%global crate deno + +Name: rust-deno +Version: 2.5.6 +Release: 2%?dist +Summary: Deno executable + +License: MIT +URL: https://crates.io/crates/deno +Source: %{crates_source} +Source1: https://raw.githubusercontent.com/denoland/deno/refs/tags/v%version/LICENSE.md +Source2: gcc-wrapper.sh +Source3: land.deno.deno.metainfo.xml +# Automatically generated patch to strip dependencies and normalize metadata +Patch: deno-fix-metadata-auto.diff + +BuildRequires: cargo-rpm-macros >= 24 +BuildRequires: anda-srpm-macros +BuildRequires: protobuf-compiler +BuildRequires: llvm17-devel +BuildRequires: python3 +BuildRequires: cmake +BuildRequires: gcc +BuildRequires: clang +BuildRequires: clang-devel + +%global _description %{expand: +Provides the deno executable.} + +%description %{_description} + +%package -n %{crate} +Summary: %{summary} +License: ((Apache-2.0 OR MIT) AND BSD-3-Clause) AND ((MIT OR Apache-2.0) AND Unicode-DFS-2016) AND (0BSD OR MIT OR Apache-2.0) AND Apache-2.0 AND (Apache-2.0 AND ISC) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR BSL-1.0 OR MIT) AND (Apache-2.0 OR ISC OR MIT) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND BSD-2-Clause AND (BSD-2-Clause OR Apache-2.0 OR MIT) AND BSD-3-Clause AND (BSD-3-Clause OR MIT) AND BSL-1.0 AND CC0-1.0 AND ISC AND (ISC AND (Apache-2.0 OR ISC)) AND (ISC AND (Apache-2.0 OR ISC) AND OpenSSL) AND MIT AND (MIT AND BSD-3-Clause) AND (MIT OR Apache-2.0) AND (MIT OR Apache-2.0 OR BSD-1-Clause) AND (MIT OR Apache-2.0 OR LGPL-2.1-or-later) AND (MIT OR Apache-2.0 OR Zlib) AND (MIT OR Zlib OR Apache-2.0) AND MPL-2.0 AND MPL-2.0+ AND Unicode-3.0 AND (Unlicense OR MIT) AND Zlib AND (Zlib OR Apache-2.0 OR MIT) +# LICENSE.dependencies contains a full license breakdown + +%description -n %{crate} %{_description} + +%files -n %{crate} +%license LICENSE.md +%license LICENSE.dependencies +%doc README.md +%{_metainfodir}/land.deno.deno.metainfo.xml +%{_bindir}/deno + +%pkg_completion -Bfzn %crate + +%prep +%autosetup -n %{crate}-%{version} -p1 +%cargo_prep_online + +cp %{S:1} . +cp %{S:2} gcc + +%global __cc %_builddir/%buildsubdir/gcc +sed '/\[env\]/a CC="%__cc"' -i .cargo/config + +%build +%{cargo_license_summary_online} +%{cargo_license_online} > LICENSE.dependencies +%{cargo_build} --locked + +%install +%crate_install_bin +mkdir -p %buildroot{%bash_completions_dir,%elvish_completions_dir,%fish_completions_dir,%zsh_completions_dir} +target/rpm/deno completions bash > %buildroot%bash_completions_dir/deno +%dnl target/rpm/deno completions elvish > %buildroot%elvish_completions_dir/deno.elv +target/rpm/deno completions fish > %buildroot%fish_completions_dir/deno.fish +target/rpm/deno completions zsh > %buildroot%zsh_completions_dir/_deno +install -Dm644 %{S:3} -t %buildroot%{_metainfodir} diff --git a/anda/devs/deno/update.rhai b/anda/devs/deno/update.rhai new file mode 100644 index 0000000000..a564f8eee7 --- /dev/null +++ b/anda/devs/deno/update.rhai @@ -0,0 +1 @@ +rpm.version(crates("deno")); diff --git a/anda/devs/edit/com.microsoft.edit.metainfo.xml b/anda/devs/edit/com.microsoft.edit.metainfo.xml new file mode 100644 index 0000000000..972f50d221 --- /dev/null +++ b/anda/devs/edit/com.microsoft.edit.metainfo.xml @@ -0,0 +1,21 @@ + + + com.microsoft.edit + Microsoft Edit + We all edit. + + https://github.com/microsoft/edit/blob/main/assets/edit_hero_image.png + + +

A simple editor for simple needs.

+

+ This editor pays homage to the classic MS-DOS Editor, but with a modern interface and input controls similar to VS Code. + The goal is to provide an accessible editor that even users largely unfamiliar with terminals can easily use. +

+
+ https://github.com/microsoft/edit + + Microsoft Corporation + + com.microsoft.edit +
diff --git a/anda/devs/edit/edit.spec b/anda/devs/edit/edit.spec index e442deab3c..ffdc63cf68 100644 --- a/anda/devs/edit/edit.spec +++ b/anda/devs/edit/edit.spec @@ -2,15 +2,19 @@ An editor that pays homage to the classic MS-DOS Editor, but with a modern interface and input controls similar to VS Code.} %global crate edit %bcond rust_nightly 0 +%global appid com.microsoft.edit +%global org com.microsoft +%global appstream_component console-application Name: %{crate} -Version: 1.2.0 -Release: 1%?dist +Version: 1.2.1 +Release: 2%?dist Summary: A simple editor for simple needs. SourceLicense: MIT License: MIT AND (MIT OR Apache-2.0) URL: https://github.com/microsoft/edit Source0: %{url}/archive/refs/tags/v%{version}.tar.gz +Source1: %{appid}.metainfo.xml BuildRequires: anda-srpm-macros BuildRequires: cargo-rpm-macros %if %{with rust_nightly} @@ -34,6 +38,11 @@ Packager: Gilver E. %install %crate_install_bin %{cargo_license_online} > LICENSE.dependencies +install -Dm644 assets/edit.svg %{buildroot}%{_iconsdir}/hicolor/scalable/apps/%{appid}.svg + +sed -i "s|^Icon=edit$|Icon=%{appid}|g" assets/%{appid}.desktop +install -Dm644 assets/%{appid}.desktop %{buildroot}%{_datadir}/applications/%{appid}.desktop +%terra_appstream -o %{SOURCE1} %files %doc CODE_OF_CONDUCT.md @@ -42,6 +51,9 @@ Packager: Gilver E. %license LICENSE %license LICENSE.dependencies %{_bindir}/%{name} +%{_metainfodir}/%{appid}.metainfo.xml +%{_iconsdir}/hicolor/scalable/apps/%{appid}.svg +%{_datadir}/applications/%{appid}.desktop %changelog * Thu May 22 2025 Gilver E. - 1.0.0-1 diff --git a/anda/devs/flow/flow-control.spec b/anda/devs/flow/flow-control.spec index 08807ad404..66cc2625c8 100644 --- a/anda/devs/flow/flow-control.spec +++ b/anda/devs/flow/flow-control.spec @@ -1,6 +1,6 @@ Name: flow-control Epoch: 1 -Version: 0.5.0 +Version: 0.6.0 Release: 1%?dist Summary: A programmer's text editor License: MIT diff --git a/anda/devs/flutter/flutter.spec b/anda/devs/flutter/flutter.spec index a9e63093f8..c50193fa28 100644 --- a/anda/devs/flutter/flutter.spec +++ b/anda/devs/flutter/flutter.spec @@ -1,5 +1,5 @@ Name: flutter -Version: 3.35.2 +Version: 3.38.2 Release: 1%?dist Summary: SDK for crafting beautiful, fast user experiences from a single codebase License: BSD-3-Clause diff --git a/anda/devs/ghostty/nightly/ghostty-nightly.spec b/anda/devs/ghostty/nightly/ghostty-nightly.spec index 41fe73eed6..97934a0893 100644 --- a/anda/devs/ghostty/nightly/ghostty-nightly.spec +++ b/anda/devs/ghostty/nightly/ghostty-nightly.spec @@ -1,9 +1,9 @@ -%global commit 2009ea511d30efd4fb96bd8788b18767f614956d +%global commit 9831709fcaab578c2f22ecabd495670dbe3e07d1 %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global fulldate 2025-08-31 +%global fulldate 2025-11-17 %global commit_date %(echo %{fulldate} | sed 's/-//g') %global public_key RWQlAjJC23149WL2sEpT/l0QKy7hMIFhYdQOFy0Z7z7PbneUgvlsnYcV -%global ver 1.1.4 +%global ver 1.3.0 %global base_name ghostty %global appid com.mitchellh.%{base_name} @@ -44,7 +44,8 @@ BuildRequires: pkgconfig(oniguruma) BuildRequires: pkgconfig(zlib) Requires: %{name}-terminfo = %{evr} Requires: %{name}-shell-integration = %{evr} -Requires: (%{name}-kio = %{evr} if kf6-kio) +Requires: (%{name}-kio = %{evr} if kf5-kio-core) +Requires: (%{name}-kio = %{evr} if kf6-kio-core) Requires: gtk4 Requires: gtk4-layer-shell Requires: libadwaita @@ -98,6 +99,13 @@ BuildArch: noarch %description zsh-completion Zsh shell completion for Ghostty. +%package devel +Summary: Development files for Ghostty. +Requires: %{name} = %{evr} + +%description devel +This package includes the development files for Ghostty. + %package kio Summary: KIO support for Ghostty Requires: %{name} = %{evr} @@ -188,7 +196,8 @@ DESTDIR="%{buildroot}" \ -Dversion-string="%{ver}-dev+%{shortcommit}" \ -Dstrip=false \ -Dpie=true \ - -Demit-docs + -Demit-docs \ + -Demit-themes=false # Don't conflict with ncurses-term on F42 and up %if 0%{?fedora} >= 42 @@ -204,7 +213,6 @@ rm -rf %{buildroot}%{_datadir}/terminfo/g/%{base_name} %{_datadir}/applications/%{appid}.desktop %dir %{_datadir}/%{base_name} %{_datadir}/%{base_name}/doc -%{_datadir}/%{base_name}/themes %{_datadir}/metainfo/%{appid}.metainfo.xml %{_datadir}/dbus-1/services/%{appid}.service %{_iconsdir}/hicolor/16x16/apps/%{appid}.png @@ -230,6 +238,11 @@ rm -rf %{buildroot}%{_datadir}/terminfo/g/%{base_name} %files zsh-completion %{zsh_completions_dir}/_%{base_name} +%files devel +%{_includedir}/ghostty/ +%{_libdir}/libghostty-vt.so +%{_datadir}/pkgconfig/libghostty-vt.pc + %files kio %{_datadir}/kio/servicemenus/%{appid}.desktop @@ -276,6 +289,10 @@ rm -rf %{buildroot}%{_datadir}/terminfo/g/%{base_name} %systemd_user_postun app-%{appid}.service %changelog +* Tue Oct 28 2025 Gilver E. - 1.3.0~tip^20251027gitd40321a-2 +- Disabled bundled themes + * This is necessary to address licensing issues in the themes repo Ghostty uses + * See: https://github.com/mbadolato/iTerm2-Color-Schemes/issues/638 * Sat May 31 2025 Gilver E. - 1.1.4~tip^20250531git1ff9162 - Updated for Zig 0.14.0 - Updated for ncurses-term compatibility in Fedora 42 and Rawhide diff --git a/anda/devs/ghostty/nightly/update.rhai b/anda/devs/ghostty/nightly/update.rhai index 41a84906e2..ea5afa784b 100644 --- a/anda/devs/ghostty/nightly/update.rhai +++ b/anda/devs/ghostty/nightly/update.rhai @@ -6,7 +6,7 @@ if rpm.changed() { let date = json.created_at; date.truncate(10); let html = get(`https://raw.githubusercontent.com/ghostty-org/ghostty/refs/heads/main/build.zig.zon`); - let ver = find(".version = \"([\\d.]+)\"", html, 1); + let ver = find("\\.version = \"([\\d.]+)-dev\"", html, 1); rpm.global("fulldate", date); rpm.global("ver", ver); rpm.release(); diff --git a/anda/devs/ghostty/stable/ghostty.spec b/anda/devs/ghostty/stable/ghostty.spec index fb73d22007..76e2d98a9c 100644 --- a/anda/devs/ghostty/stable/ghostty.spec +++ b/anda/devs/ghostty/stable/ghostty.spec @@ -3,7 +3,7 @@ %global appid com.mitchellh.ghostty Name: ghostty -Version: 1.1.3 +Version: 1.2.3 Release: 2%?dist Summary: A fast, native terminal emulator written in Zig. License: MIT AND MPL-2.0 AND OFL-1.1 AND (WTFPL OR CC0-1.0) AND Apache-2.0 @@ -11,6 +11,7 @@ URL: https://ghostty.org/ Source0: https://release.files.ghostty.org/%{version}/ghostty-%{version}.tar.gz Source1: https://release.files.ghostty.org/%{version}/ghostty-%{version}.tar.gz.minisig BuildRequires: anda-srpm-macros >= 0.2.15 +BuildRequires: gettext BuildRequires: gtk4-devel BuildRequires: libadwaita-devel BuildRequires: libX11-devel @@ -18,22 +19,26 @@ BuildRequires: minisign BuildRequires: ncurses BuildRequires: ncurses-devel BuildRequires: pandoc-cli +BuildRequires: systemd-rpm-macros BuildRequires: zig >= 0.14.0 BuildRequires: zig-rpm-macros +BuildRequires: pkgconfig(blueprint-compiler) BuildRequires: pkgconfig(bzip2) BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(fontconfig) BuildRequires: pkgconfig(gtk4) +BuildRequires: pkgconfig(gtk4-layer-shell-0) BuildRequires: pkgconfig(harfbuzz) BuildRequires: pkgconfig(libadwaita-1) BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(libxml-2.0) BuildRequires: pkgconfig(oniguruma) BuildRequires: pkgconfig(zlib) -Requires: %{name}-terminfo = %{version}-%{release} -Requires: %{name}-shell-integration = %{version}-%{release} -Requires: (%{name}-kio = %{evr} if kf6-kio) +Requires: %{name}-terminfo = %{evr} +Requires: (%{name}-kio = %{evr} if kf5-kio-core) +Requires: (%{name}-kio = %{evr} if kf6-kio-core) Requires: gtk4 +Requires: gtk4-layer-shell Requires: libadwaita Conflicts: ghostty-nightly Packager: Gilver E. @@ -43,7 +48,7 @@ Packager: Gilver E. %package bash-completion Summary: Ghostty Bash completion -Requires: %{name} = %{version}-%{release} +Requires: %{name} Requires: bash-completion Supplements: (%{name} and bash-completion) BuildArch: noarch @@ -53,7 +58,7 @@ Bash shell completion for Ghostty. %package fish-completion Summary: Ghostty Fish completion -Requires: %{name} = %{version}-%{release} +Requires: %{name} Requires: fish Supplements: (%{name} and fish) BuildArch: noarch @@ -63,7 +68,7 @@ Fish shell completion for Ghostty. %package zsh-completion Summary: Ghostty Zsh completion -Requires: %{name} = %{version}-%{release} +Requires: %{name} Requires: zsh Supplements: (%{name} and zsh) BuildArch: noarch @@ -129,33 +134,21 @@ This package contains files allowing Ghostty to integrate with various shells. %package terminfo Summary: Ghostty terminfo -Supplements: %{name} %if 0%{?fedora} >= 42 -Requires: ncurses-term >= 6.5-5.20250125%{?dist} +Requires: ncurses-term >= 6.5-5.20250125 %endif +Supplements: %{name} Obsoletes: %{name}-terminfo-source < %{evr} BuildArch: noarch %description terminfo Ghostty's terminfo. Needed for basic terminal function. -%package terminfo-source -Summary: Source files for Ghostty's terminfo -Requires: %{name} -Requires: %{name}-terminfo -BuildArch: noarch - -%description terminfo-source -Source files for Ghostty's terminfo. Available for debugging use. - %prep /usr/bin/minisign -V -m %{SOURCE0} -x %{SOURCE1} -P %{public_key} %autosetup -export ZIG_GLOBAL_CACHE_DIR="%{_zig_cache_dir}" -zig build --fetch -zig fetch git+https://github.com/zigimg/zigimg#3a667bdb3d7f0955a5a51c8468eac83210c1439e -zig fetch git+https://github.com/mitchellh/libxev#f6a672a78436d8efee1aa847a43a900ad773618b +ZIG_GLOBAL_CACHE_DIR="%{_zig_cache_dir}" ./nix/build-support/fetch-zig-cache.sh %build @@ -167,22 +160,25 @@ DESTDIR="%{buildroot}" \ -Dversion-string="%{version}" \ -Dstrip=false \ -Dpie=true \ - -Demit-docs + -Demit-docs \ + -Demit-themes=false -#Don't conflict with ncurses-term on F42 and up +# Don't conflict with ncurses-term on F42 and up %if 0%{?fedora} >= 42 -rm -rf %{buildroot}%{_datadir}/terminfo/g/ghostty +rm -rf %{buildroot}%{_datadir}/terminfo/g/%{name} %endif -%files +%find_lang %{appid} + +%files -f %{appid}.lang %doc README.md %license LICENSE %{_bindir}/%{name} %{_datadir}/applications/%{appid}.desktop %dir %{_datadir}/%{name} %{_datadir}/%{name}/doc -%{_datadir}/%{name}/themes %{_datadir}/metainfo/%{appid}.metainfo.xml +%{_datadir}/dbus-1/services/%{appid}.service %{_iconsdir}/hicolor/16x16/apps/%{appid}.png %{_iconsdir}/hicolor/16x16@2/apps/%{appid}.png %{_iconsdir}/hicolor/32x32/apps/%{appid}.png @@ -195,8 +191,7 @@ rm -rf %{buildroot}%{_datadir}/terminfo/g/ghostty %{_iconsdir}/hicolor/1024x1024/apps/%{appid}.png %{_mandir}/man1/%{name}.1.gz %{_mandir}/man5/%{name}.5.gz -%{_userunitdir}/%{appid}.service -%{_prefix}/lib/dbus-1/services/%{appid}.service +%{_userunitdir}/app-%{appid}.service %files bash-completion %{bash_completions_dir}/%{name}.bash @@ -239,15 +234,24 @@ rm -rf %{buildroot}%{_datadir}/terminfo/g/ghostty %files terminfo %if 0%{?fedora} < 42 -%{_datadir}/terminfo/g/ghostty +%{_datadir}/terminfo/g/%{name} %endif -%{_datadir}/terminfo/x/xterm-ghostty +%{_datadir}/terminfo/x/xterm-%{name} -%files terminfo-source -%{_datadir}/terminfo/ghostty.termcap -%{_datadir}/terminfo/ghostty.terminfo +%post +%systemd_user_post app-%{appid}.service + +%preun +%systemd_user_preun app-%{appid}.service + +%postun +%systemd_user_postun app-%{appid}.service %changelog +* Tue Oct 28 2025 Gilver E. - 1.2.3-2 +- Disabled bundled themes + * This is necessary to address licensing issues in the themes repo Ghostty uses + * See: https://github.com/mbadolato/iTerm2-Color-Schemes/issues/638 * Fri Jan 31 2025 Gilver E. - Update to 1.1.0-1%{?dist} * Low GHSA-98wc-794w-gjx3: Ghostty leaked file descriptors allowing the shell and any of its child processes to impact other Ghostty terminal instances diff --git a/anda/devs/kvrocks/kvrocks.spec b/anda/devs/kvrocks/kvrocks.spec index 063f438a6f..39cbf442dd 100644 --- a/anda/devs/kvrocks/kvrocks.spec +++ b/anda/devs/kvrocks/kvrocks.spec @@ -1,5 +1,5 @@ Name: kvrocks -Version: 2.13.0 +Version: 2.14.0 Release: 1%?dist Summary: Distributed key value NoSQL database that uses RocksDB License: Apache-2.0 diff --git a/anda/devs/lowfi/rust-lowfi.spec b/anda/devs/lowfi/rust-lowfi.spec index 51e9268911..4d9c86af11 100644 --- a/anda/devs/lowfi/rust-lowfi.spec +++ b/anda/devs/lowfi/rust-lowfi.spec @@ -2,7 +2,7 @@ %global crate lowfi Name: rust-lowfi -Version: 1.6.0 +Version: 1.7.2 Release: 1%?dist Summary: Extremely simple lofi player diff --git a/anda/devs/micro/micro-nightly.spec b/anda/devs/micro/micro-nightly.spec index 039f144da9..ae95a35d42 100644 --- a/anda/devs/micro/micro-nightly.spec +++ b/anda/devs/micro/micro-nightly.spec @@ -12,8 +12,8 @@ # Naming variable as something other than "commit" is necessary # to stop %%gometa from putting commit hash in release -%global commit_hash b8057f28c6e5adef9744250643ad8cf8b5fafa18 -%global commit_date 20250826 +%global commit_hash bc5e59c670c6ea971c52a9f60262122bd39eec32 +%global commit_date 20251119 %global shortcommit %{sub %{commit_hash} 1 7} %global ver 2.0.14 diff --git a/anda/devs/neovide/neovide.spec b/anda/devs/neovide/neovide.spec index 516f1494ed..b6b13b242d 100644 --- a/anda/devs/neovide/neovide.spec +++ b/anda/devs/neovide/neovide.spec @@ -2,7 +2,7 @@ %global raw_forgeurl https://raw.githubusercontent.com/%{crate}/%{crate} Name: rust-neovide -Version: 0.15.1 +Version: 0.15.2 Release: 1%?dist Summary: No Nonsense Neovim Client in Rust diff --git a/anda/devs/rio/rio.spec b/anda/devs/rio/rio.spec index b1c28ac14b..641452a64b 100644 --- a/anda/devs/rio/rio.spec +++ b/anda/devs/rio/rio.spec @@ -4,7 +4,7 @@ A hardware-accelerated terminal emulator focusing to run in desktops and browser %bcond docs 1 Name: rio -Version: 0.2.29 +Version: 0.2.36 Release: 1%?dist Summary: A hardware-accelerated terminal written in Rust. SourceLicense: MIT @@ -21,6 +21,7 @@ BuildRequires: libxcb-devel BuildRequires: libxkbcommon-devel BuildRequires: mold BuildRequires: sed +BuildRequires: pkgconfig(alsa) Requires: freetype Requires: fontconfig Requires: hicolor-icon-theme diff --git a/anda/devs/shibuya/python-shibuya.spec b/anda/devs/shibuya/python-shibuya.spec index 0b77e3d467..16dc0b9665 100644 --- a/anda/devs/shibuya/python-shibuya.spec +++ b/anda/devs/shibuya/python-shibuya.spec @@ -5,7 +5,7 @@ A responsive, good looking with modern design documentation theme for Sphinx, wi %bcond docs 0 Name: python-%{pypi_name} -Version: 2025.8.16 +Version: 2025.11.10 Release: 1%?dist Summary: A clean, responsive, and customizable Sphinx documentation theme with light/dark mode License: BSD-3-Clause diff --git a/anda/devs/tracy/tracy.spec b/anda/devs/tracy/tracy.spec index 7ec991aa9c..f3352c294f 100644 --- a/anda/devs/tracy/tracy.spec +++ b/anda/devs/tracy/tracy.spec @@ -1,7 +1,7 @@ %global _desc Tracy is a real time, nanosecond resolution, remote telemetry, hybrid frame and sampling profiler for games and other applications. Name: tracy -Version: 0.12.2 +Version: 0.13.0 Release: 1%?dist Summary: A real time, nanosecond resolution, remote telemetry, hybrid frame and sampling profiler for games and other applications. License: BSD-3-Clause diff --git a/anda/devs/zed/nightly/zed-nightly.spec b/anda/devs/zed/nightly/zed-nightly.spec index ec043cb9e1..aa4584e816 100644 --- a/anda/devs/zed/nightly/zed-nightly.spec +++ b/anda/devs/zed/nightly/zed-nightly.spec @@ -1,7 +1,7 @@ -%global commit a852bcc09410b47dcabbe9b089725777024d125e +%global commit 1fab43d467c3e610bd72cfb94ac12d09d791f397 %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global commit_date 20250901 -%global ver 0.203.0 +%global commit_date 20251120 +%global ver 0.215.0 %bcond_with check %bcond nightly 1 @@ -71,6 +71,7 @@ This package provides the /usr/bin/zed binary. If you use zfs, install %name-ren %files cli %_bindir/zed %{_datadir}/applications/%app_id.desktop +%{_metainfodir}/%app_id.metainfo.xml %package rename-zeditor Summary: Rename zed to zeditor to prevent collision with zfs @@ -84,6 +85,7 @@ The normal package is %name-cli. %files rename-zeditor %_bindir/zeditor %_datadir/applications/%app_id.desktop.zeditor +%{_metainfodir}/%app_id.metainfo.xml %prep @@ -107,6 +109,7 @@ export BRANDING_DARK="#1a5fb4" echo "StartupWMClass=$APP_ID" >> crates/zed/resources/zed.desktop.in envsubst < "crates/zed/resources/zed.desktop.in" > $APP_ID.desktop # from https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=zed-git#n52 +sed -i "s|@release_info@||g" "crates/zed/resources/flatpak/zed.metainfo.xml.in" envsubst < "crates/zed/resources/flatpak/zed.metainfo.xml.in" > $APP_ID.metainfo.xml @@ -151,6 +154,9 @@ mv assets/fonts/ibm-plex-sans/license.txt LICENSE.fonts %if %{with check} %check +appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%app_id.metainfo.xml +desktop-file-validate %{buildroot}%{_datadir}/applications/%app_id.desktop + %cargo_test %endif @@ -167,7 +173,6 @@ mv assets/fonts/ibm-plex-sans/license.txt LICENSE.fonts %license assets/licenses.md %{_libexecdir}/zed-editor %{_datadir}/pixmaps/%app_id.png -%{_metainfodir}/%app_id.metainfo.xml %changelog %autochangelog diff --git a/anda/devs/zed/preview/zed-preview.spec b/anda/devs/zed/preview/zed-preview.spec index c5202bccef..2f7f8d7a66 100644 --- a/anda/devs/zed/preview/zed-preview.spec +++ b/anda/devs/zed/preview/zed-preview.spec @@ -1,6 +1,6 @@ %bcond_with check -%global ver 0.202.4-pre +%global ver 0.214.0-pre # Exclude input files from mangling %global __brp_mangle_shebangs_exclude_from ^/usr/src/.*$ @@ -11,7 +11,7 @@ Name: zed-preview Version: %(echo %ver | sed 's/-/~/') -Release: 4%?dist +Release: 5%?dist Summary: Zed is a high-performance, multiplayer code editor SourceLicense: AGPL-3.0-only AND Apache-2.0 AND GPL-3.0-or-later License: ((Apache-2.0 OR MIT) AND BSD-3-Clause) AND ((MIT OR Apache-2.0) AND Unicode-3.0) AND (0BSD OR MIT OR Apache-2.0) AND (Apache-2.0 AND ISC) AND AGPL.3.0-only AND AGPL-3.0-or-later AND (Apache-2.0 OR BSL-1.0 OR MIT) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR ISC OR MIT) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception) AND Apache-2.0 AND (BSD-2-Clause OR Apache-2.0 OR MIT) AND (BSD-2-Clause OR MIT OR Apache-2.0) AND BSD-2-Clause AND (CC0-1.0 OR Apache-2.0 OR Apache-2.0 WITH LLVM-exception) AND (CC0-1.0 OR Apache-2.0) AND (CC0-1.0 OR MIT-0 OR Apache-2.0) AND CC0-1.0 AND GPL-3.0-or-later AND (ISC AND (Apache-2.0 OR ISC) AND OpenSSL) AND (ISC AND (Apache-2.0 OR ISC)) AND ISC AND (MIT AND (MIT OR Apache-2.0)) AND (MIT AND BSD-3-Clause) AND (MIT OR Apache-2.0 OR CC0-1.0) AND (MIT OR Apache-2.0 OR NCSA) AND (MIT OR Apache-2.0 OR Zlib) AND (MIT OR Apache-2.0) AND (MIT OR Zlib OR Apache-2.0) AND MIT AND MPL-2.0 AND Unicode-3.0 AND (Unlicense OR MIT) AND (Zlib OR Apache-2.0 OR MIT) AND Zlib @@ -63,6 +63,7 @@ This package provides the /usr/bin/zed binary. If you use zfs, install %name-ren %files cli %_bindir/zed %{_datadir}/applications/%app_id.desktop +%{_metainfodir}/%app_id.metainfo.xml %package rename-zeditor Summary: Rename zed to zeditor to prevent collision with zfs @@ -76,6 +77,7 @@ The normal package is %name-cli. %files rename-zeditor %_bindir/zeditor %_datadir/applications/%app_id.desktop.zeditor +%{_metainfodir}/%app_id.metainfo.xml %prep @@ -96,6 +98,7 @@ export BRANDING_DARK="#1a5fb4" echo "StartupWMClass=$APP_ID" >> crates/zed/resources/zed.desktop.in envsubst < "crates/zed/resources/zed.desktop.in" > $APP_ID.desktop # from https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=zed-git#n52 +sed -i "s|@release_info@||g" "crates/zed/resources/flatpak/zed.metainfo.xml.in" envsubst < "crates/zed/resources/flatpak/zed.metainfo.xml.in" > $APP_ID.metainfo.xml @@ -140,6 +143,9 @@ mv assets/fonts/ibm-plex-sans/license.txt LICENSE.fonts %if %{with check} %check +appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%app_id.metainfo.xml +desktop-file-validate %{buildroot}%{_datadir}/applications/%app_id.desktop + %cargo_test %endif @@ -156,7 +162,6 @@ mv assets/fonts/ibm-plex-sans/license.txt LICENSE.fonts %license assets/licenses.md %{_libexecdir}/zed-editor %{_datadir}/pixmaps/%app_id.png -%{_metainfodir}/%app_id.metainfo.xml %changelog %autochangelog diff --git a/anda/devs/zed/stable/zed.spec b/anda/devs/zed/stable/zed.spec index a63aa2707d..95b420591a 100644 --- a/anda/devs/zed/stable/zed.spec +++ b/anda/devs/zed/stable/zed.spec @@ -9,7 +9,7 @@ %global rustflags_debuginfo 0 Name: zed -Version: 0.201.8 +Version: 0.213.3 Release: 1%?dist Summary: Zed is a high-performance, multiplayer code editor SourceLicense: AGPL-3.0-only AND Apache-2.0 AND GPL-3.0-or-later @@ -63,6 +63,7 @@ This package provides the /usr/bin/zed binary. If you use zfs, install %name-ren %files cli %_bindir/zed %{_datadir}/applications/%app_id.desktop +%{_metainfodir}/%app_id.metainfo.xml %package rename-zeditor Summary: Rename zed to zeditor to prevent collision with zfs @@ -76,6 +77,7 @@ The normal package is %name-cli. %files rename-zeditor %_bindir/zeditor %_datadir/applications/%app_id.desktop.zeditor +%{_metainfodir}/%app_id.metainfo.xml %prep @@ -96,6 +98,7 @@ export BRANDING_DARK="#1a5fb4" echo "StartupWMClass=$APP_ID" >> crates/zed/resources/zed.desktop.in envsubst < "crates/zed/resources/zed.desktop.in" > $APP_ID.desktop # from https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=zed-git#n52 +sed -i "s|@release_info@||g" "crates/zed/resources/flatpak/zed.metainfo.xml.in" envsubst < "crates/zed/resources/flatpak/zed.metainfo.xml.in" > $APP_ID.metainfo.xml @@ -140,6 +143,9 @@ mv assets/fonts/ibm-plex-sans/license.txt LICENSE.fonts %if %{with check} %check +appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%app_id.metainfo.xml +desktop-file-validate %{buildroot}%{_datadir}/applications/%app_id.desktop + %cargo_test %endif @@ -156,7 +162,6 @@ mv assets/fonts/ibm-plex-sans/license.txt LICENSE.fonts %license assets/licenses.md %{_libexecdir}/zed-editor %{_datadir}/pixmaps/%app_id.png -%{_metainfodir}/%app_id.metainfo.xml %changelog %autochangelog diff --git a/anda/fonts/geist/geist.spec b/anda/fonts/geist/geist.spec index 54d8d27bae..8ddbbd25ea 100644 --- a/anda/fonts/geist/geist.spec +++ b/anda/fonts/geist/geist.spec @@ -1,5 +1,5 @@ Name: geist-font -Version: 1.5.0 +Version: 1.6.0 Release: 1%?dist URL: https://vercel.com/font Source0: https://github.com/vercel/geist-font/archive/refs/tags/%version.tar.gz diff --git a/anda/fonts/iosevka/anda.hcl b/anda/fonts/iosevka/anda.hcl new file mode 100644 index 0000000000..baf031df6b --- /dev/null +++ b/anda/fonts/iosevka/anda.hcl @@ -0,0 +1,9 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "iosevka-fonts.spec" + } + # labels { + # large = 1 + # } +} diff --git a/anda/fonts/iosevka/iosevka-fonts.spec b/anda/fonts/iosevka/iosevka-fonts.spec new file mode 100644 index 0000000000..d0576592dd --- /dev/null +++ b/anda/fonts/iosevka/iosevka-fonts.spec @@ -0,0 +1,146 @@ +%define _iosevka_families Iosevka IosevkaAile IosevkaCurly IosevkaCurlySlab IosevkaEtoile IosevkaSS01 IosevkaSS02 IosevkaSS03 IosevkaSS04 IosevkaSS05 IosevkaSS06 IosevkaSS07 IosevkaSS08 IosevkaSS09 IosevkaSS10 IosevkaSS11 IosevkaSS12 IosevkaSS13 IosevkaSS14 IosevkaSS15 IosevkaSS16 IosevkaSlab + +# HACK: Download prebuilt binaries instead of building from source +# +# XXX: Use `--without bins` only if you enjoy waiting 33+ hours and death by +# a thousand JavaScript apps, or you use Gentoo. +%bcond_without bins + +%bcond_without smt +%bcond_with ttc + +# this runs at macro expansion time, not build time +%{lua: + local families = rpm.expand("%{_iosevka_families}") + local i = 0 + local function prettify(name) + -- insert space before uppercase letters (except first) + local spaced = name:gsub("(%l)(%u)", "%1 %2") + -- fix "SSxx" into "SSxx" (with space before) + spaced = spaced:gsub("(%a)(SS%d+)", "%1 %2") + return spaced + end + for family in string.gmatch(families, "%S+") do + local pretty = prettify(family) + rpm.define(string.format("fontfamily%d %s", i, pretty)) + if rpm.expand("%{with bins}") == "1" then + -- PkgTTC-Iosevka-33.3.3 + rpm.define(string.format("fonts%d %s/*.ttc", i, family)) + else + if rpm.expand("%{with ttc}") == "1" then + rpm.define(string.format("fonts%d dist/.ttc/%s/*.ttc", i, family)) + else + rpm.define(string.format("fonts%d dist/%s/TTF/*.ttf", i, family)) + end + end + rpm.define(string.format("fontdescription%d %%fontdescription (%s)", i, pretty)) + i = i + 1 + end + rpm.define(string.format("iosevka_family_count %d", i)) +} + + + +%global fontorg io.github.be5invis +%global fontlicense OFL-1.1 +%if %{with bins} +%global fontlicenses Iosevka-%{version}/LICENSE.md +%else +%global fontlicenses LICENSE.md +%endif +%global foundry Belleve Invis +%global fontdescription %{expand: +Versatile typeface for code, from code.} + +Version: 33.3.4 +Release: 1%?dist +Packager: Cappy Ishihara +Summary: Versatile typeface for code, from code. +BuildRequires: rpm_macro(fontpkg) +URL: https://github.com/be5invis/Iosevka +Source0: %{url}/archive/refs/tags/v%{version}.tar.gz +%if %{with bins} +BuildRequires: curl +BuildRequires: jq +BuildRequires: aria2 +BuildRequires: unzip +%else +BuildRequires: bun-bin +BuildRequires: ttfautohint +%endif + +%fontpkg -a +%fontmetapkg + +%prep +%if %{with bins} +%setup -c + +# TODO: Probably enhance by scripting RPM to add a `SourceN` directive instead +# download prebuilt binaries instead of building from source +# NOTE: May invite the ire of GitHub rate limiting since this pulls +# a LOT of assets in one go +curl https://api.github.com/repos/be5invis/Iosevka/releases/tags/v%{version} \ + | jq -r ".assets[] | .browser_download_url" | grep PkgTTC-Iosevka \ + | aria2c -i - + +%else + +%autosetup -n Iosevka-%{version} +bun i +%endif + +%build + +# XXX: Verda is VERY expensive when building fonts from source, +# which might be fine if you're building on a supercomputer with +# many cores and tons of RAM and lots of time to spare. +# +# By default the SMT build is enabled in case you want to +# melt your computer by literally building fonts from source, see +# the `--with bin` option to disable prebuilt binaries +# +# The build time is roughly ~1.5h * 22 = 33 hours on a quad-core +# machine with 32GB of RAM when building with maximum parallelism, +# so be warned. +# +%if %{with smt} +%define _font_smp_flags --jCmd=%{_smp_build_ncpus} +%else +# However, we will be doing only 1 thread here to avoid +# thrashing builders +%define _font_smp_flags --jCmd=1 +%endif + + +collections="%{_iosevka_families}" + +%if %{with bins} +build_font() { + local style=$1 + local zipfile="PkgTTC-${style}-%{version}.zip" + unzip -d ${style}/ ${zipfile} +} +%else +build_font() { + local style=$1 + bun run --bun build -- ttc::${style} %{_font_smp_flags} +} +%endif + +for collection in $collections; do + build_font "$collection" +done + +%fontbuild -a + +%install +%fontinstall -a + +%check +%fontcheck -a + +%fontfiles -a + +%changelog +%autochangelog diff --git a/anda/fonts/iosevka/update.rhai b/anda/fonts/iosevka/update.rhai new file mode 100644 index 0000000000..e9a39b4a9e --- /dev/null +++ b/anda/fonts/iosevka/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("be5invis/Iosevka")); diff --git a/anda/fonts/maple/maple-fonts.spec b/anda/fonts/maple/maple-fonts.spec index 97f362988f..7fd41919fe 100644 --- a/anda/fonts/maple/maple-fonts.spec +++ b/anda/fonts/maple/maple-fonts.spec @@ -1,6 +1,6 @@ %define debug_package %nil %define _ttfontsdir %{_datadir}/fonts/maple -%global upstream_ver v7.6 +%global upstream_ver v7.8 %define sanitized_ver %(echo "$( sed 's/^.//;s/-/~/' <<< "%{upstream_ver}" )") Name: maple-fonts diff --git a/anda/fonts/natrium/anda.hcl b/anda/fonts/natrium/anda.hcl new file mode 100644 index 0000000000..c0675aa540 --- /dev/null +++ b/anda/fonts/natrium/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "natrium-fonts.spec" + } +} diff --git a/anda/fonts/natrium/natrium-fonts.spec b/anda/fonts/natrium/natrium-fonts.spec new file mode 100644 index 0000000000..de93b57398 --- /dev/null +++ b/anda/fonts/natrium/natrium-fonts.spec @@ -0,0 +1,47 @@ +%global orgprefix fyralabs +%global fontcontact security@fyralabs.com +%global fontorg co.tauos +%global foundry Fyra Labs +%global fontlicense OFL-1.1 +%global fontlicenses LICENSE.md +%global fontdocs README.md + +Version: 1.0.0 +Release: 1%{?dist} +%global fontfamily Natrium +%global fontsummary Natrium - The tauOS UI font +%global fonts Natrium/otf/*.otf +%global fontdescription %fontsummary + +URL: https://github.com/tau-OS/natrium +Provides: natrium-fonts = %{version}-%{release} +Source0: %url/releases/download/v%{version}/natrium-fonts.zip + +BuildRequires: fontforge +BuildRequires: rpm_macro(fontpkg) + + +%global fonts2 NatriumMono/otf/*.otf +%global fontfamily2 Natrium Mono +%global fontsummary2 Natrium Mono - The tauOS monospace font +%global fontdescription2 %fontsummary2 + +%fontpkg -a +%fontmetapkg + + +%prep +%autosetup -c + +%build +%fontbuild + +%install +%fontinstall -a + + + +%check +%fontcheck -a + +%fontfiles -a diff --git a/anda/fonts/natrium/update.rhai b/anda/fonts/natrium/update.rhai new file mode 100644 index 0000000000..1bd109136c --- /dev/null +++ b/anda/fonts/natrium/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("tau-OS/natrium")); diff --git a/anda/fonts/sarasa-gothic/sarasa-gothic-fonts.spec b/anda/fonts/sarasa-gothic/sarasa-gothic-fonts.spec index a6b01a8383..0d49517a7d 100644 --- a/anda/fonts/sarasa-gothic/sarasa-gothic-fonts.spec +++ b/anda/fonts/sarasa-gothic/sarasa-gothic-fonts.spec @@ -1,5 +1,5 @@ Name: sarasa-gothic-fonts -Version: 1.0.32 +Version: 1.0.34 Release: 1%?dist URL: https://github.com/be5invis/Sarasa-Gothic Source0: %url/releases/download/v%version/Sarasa-TTC-%version.7z diff --git a/anda/fonts/sipa/15-supercede-sarabun.conf b/anda/fonts/sipa/15-supercede-sarabun.conf deleted file mode 100644 index c8aadda9d6..0000000000 --- a/anda/fonts/sipa/15-supercede-sarabun.conf +++ /dev/null @@ -1,22 +0,0 @@ - - - - Set Thai font preferences - - - - Sarabun - - - TH Sarabun New - - - - - TH Sarabun - - - TH Sarabun New - - - diff --git a/anda/fonts/sipa/SIPA-LICENSE b/anda/fonts/sipa/SIPA-LICENSE new file mode 100644 index 0000000000..aae7dcbf95 --- /dev/null +++ b/anda/fonts/sipa/SIPA-LICENSE @@ -0,0 +1,63 @@ +สัญญาอนุญาตให้ใช้โปรแกรมคอมพิวเตอร์ฟอนต์ + +ชื่อที่สงวนไว้สำหรับโปรแกรมคอมพิวเตอร์ฟอนต์นี้ +TH Krub, TH Krub Italic, TH Krub Bold, TH Krub Bold Italic, +TH Niramit AS, TH Niramit AS Italic, TH Niramit AS Bold, TH Niramit AS Bold Italic, +TH Kodchasal, TH Kodchasal Italic, TH Kodchasal Bold, TH Kodchasal Bold Italic, +TH Sarabun PSK, TH Sarabun PSK Italic, TH Sarabun PSK Bold, TH Sarabun PSK Bold Italic, +TH K2D July8, TH K2D July8 Italic, TH K2D July8 Bold, TH K2D July8 Bold Italic, +TH Mali Grade 6, TH Mali Grade 6 Italic, TH Mali Grade 6 Bold, TH Mali Grade 6 Bold Italic, +TH Chakra Petch, TH Chakra Petch Italic, TH Chakra Petch Bold, TH Chakra Petch Bold Italic, +TH Baijam, TH Baijam Italic, TH Baijam Bold, TH Baijam Bold Italic, +TH KoHo, TH KoHo Italic, TH KoHo Bold, TH KoHo Bold Italic, +TH Fah Kwang, TH Fah Kwang Italic, TH Fah Kwang Bold, TH Fah Kwang Bold Italic. + +โปรแกรมคอมพิวเตอร์ฟอนต์นี้ เป็นลิขสิทธิ์ร่วมกันของกรมทรัพย์สินทางปัญญา กระทรวงพาณิชย์ และสำนักงานส่งเสริมอุตสาหกรรมซอฟต์แวร์แห่งชาติ (องค์การมหาชน) + +สัญญาอนุญาตให้ใช้โปรแกรมคอมพิวเตอร์ฟอนต์นี้ มีวัตถุประสงค์เพื่อก่อให้เกิดความร่วมมือในการสร้างสรรค์ฟอนต์ในวงกว้าง รวมทั้งเพื่อประโยชน์ทางด้านการศึกษาและการแบ่งปันความรู้และพัฒนาโปรแกรมคอมพิวเตอร์ฟอนต์นี้ + +ข้อกำหนดและเงื่อนไขของสัญญาอนุญาตให้ใช้โปรแกรมคอมพิวเตอร์ฟอนต์นี้ + +(1) อนุญาตให้ใช้ได้โดยไม่คิดค่าใช้จ่ายและอนุญาตให้ทำซ้ำโปรแกรมคอมพิวเตอร์ฟอนต์นี้ได้ รวมทั้งอนุญาตให้ได้ศึกษา ดัดแปลง และแจกจ่ายให้แก่ผู้อื่นได้ ทั้งนี้จะต้องไม่นำโปรแกรมคอมพิวเตอร์ฟอนต์นี้และโปรแกรมคอมพิวเตอร์ฟอนต์ที่ดัดแปลงออกจำหน่าย เว้นแต่เป็นการจำหน่ายรวมติดไปกับโปรแกรมคอมพิวเตอร์อื่น + +(2) ก่อนดำเนินการดัดแปลงโปรแกรมคอมพิวเตอร์ฟอนต์ จะต้องแจ้งให้เจ้าของลิขสิทธิ์ทราบเป็นลายลักษณ์อักษร + +(3) เมื่อดัดแปลงโปรแกรมคอมพิวเตอร์ฟอนต์นี้แล้ว ห้ามผู้ดัดแปลงใช้ชื่อฟอนต์เดิม รวมทั้งห้ามใช้ชื่อเจ้าของลิขสิทธิ์และผู้สร้างสรรค์โปรแกรมคอมพิวเตอร์ฟอนต์นี้ ในการโฆษณาโปรแกรมคอมพิวเตอร์ฟอนต์ที่ได้ดัดแปลง เว้นแต่ได้รับอนุญาตเป็นลายลักษณ์อักษรจากเจ้าของลิขสิทธิ์ + +(4) ผู้ดัดแปลงโปรแกรมคอมพิวเตอร์นี้จะต้องยินยอมให้โปรแกรมคอมพิวเตอร์ฟอนต์ ที่ดัดแปลงขึ้นใหม่มีข้อกำหนดและเงื่อนไขสัญญาอนุญาตให้ใช้โปรแกรมเช่นเดียวกันกับข้อกำหนด และเงื่อนไขของสัญญาอนุญาตนี้เช่นกัน + +ข้อถือสิทธิ +เจ้าของลิขสิทธิ์ไม่รับประกันการใช้งานโปรแกรมคอมพิวเตอร์ฟอนต์และไฟล์ที่เกี่ยวข้องนี้แต่อย่างใด ไม่มีการรับรองว่าโปรแกรมคอมพิวเตอร์ฟอนต์นี้จะทำงานได้อย่างที่ควรจะเป็น และไม่มีการรับรองว่าจะมีการพัฒนาต่อยอดในอนาคต ไม่มีและไม่รับรองว่าจะมีการให้คำแนะนำทางเทคนิคสำหรับโปรแกรมคอมพิวเตอร์ฟอนต์นี้ + + +Font Computer Program License Agreement + +Reserved Font Names for this Font Computer Program: +TH Krub, TH Krub Italic, TH Krub Bold, TH Krub Bold Italic, +TH Niramit AS, TH Niramit AS Italic, TH Niramit AS Bold, TH Niramit AS Bold Italic, +TH Kodchasal, TH Kodchasal Italic, TH Kodchasal Bold, TH Kodchasal Bold Italic, +TH Sarabun PSK, TH Sarabun PSK Italic, TH Sarabun PSK Bold, TH Sarabun PSK Bold Italic, +TH K2D July8, TH K2D July8 Italic, TH K2D July8 Bold, TH K2D July8 Bold Italic, +TH Mali Grade 6, TH Mali Grade 6 Italic, TH Mali Grade 6 Bold, TH Mali Grade 6 Bold Italic, +TH Chakra Petch, TH Chakra Petch Italic, TH Chakra Petch Bold, TH Chakra Petch Bold Italic, +TH Baijam, TH Baijam Italic, TH Baijam Bold, TH Baijam Bold Italic, +TH KoHo, TH KoHo Italic, TH KoHo Bold, TH KoHo Bold Italic, +TH Fah Kwang, TH Fah Kwang Italic, TH Fah Kwang Bold, TH Fah Kwang Bold Italic. + +This Font Computer Program is the copyright of the Department of Intellectual Property (DIP), Ministry of Commerce and the Software Industry Promotion Agency (Public Organization) (SIPA) + +The purposes of this Font Computer Program License are to stimulate worldwide development of cooperative font creation, to benefit for academic, to share and to develop in partnership with others. + +Terms and Conditions of the Font Computer Program + +(1) Allow to use without any charges and allow to reproduce, study, adapt and distribute this Font Computer Program. Neither the original version nor adapted version of Font Computer Program may be sold by itself, except bundled and/or sold with any computer program. + +(2) If you wish to adapt this Font Computer Program, you must notify copyright owners (DIP & SIPA) in writing. + +(3) No adapted version of Font Computer Program may use the Reserved Font Name(s), the name(s) of the copyright owners and the author(s) of the Font Computer Program must not be used to promote or advertise any adapted version, except obtaining written permission from copyright owners and the author(s). + +(4) The adapted version of Font Computer Program must be released under the term and condition of this license. + +DISCLAIMER +THE FONT COMPUTER PROGRAM AND RELATED FILES ARE PROVIDED “AS IS” AND WITHOUT WARRANTY OF ANY KIND. NO GUARANTEES ARE MADE THAT THIS FONT COMPUTER PROGRAM WILL WORK AS EXPECTED OR WILL BE DEVELOPED FURTHUR IN ANY SPECIFIC WAY. THERE IS NO OFFER OR GUARANTEE OF TECHNICAL SUPPORT. + diff --git a/anda/fonts/sipa/sipa-fonts.spec b/anda/fonts/sipa/sipa-fonts.spec index 49fffb2dd2..6a4ca3801c 100644 --- a/anda/fonts/sipa/sipa-fonts.spec +++ b/anda/fonts/sipa/sipa-fonts.spec @@ -1,160 +1,188 @@ -%global variants Baijam Chakra Charm Charmonman Fahkwang K2D_July8 KoHo Kodchasal Krub Mali_Grade6 Niramit_AS Srisakdi Sarabun SarabunNew - -Name: sipa-fonts +%global fontcontact depathailand@depa.or.th +# note: SIPA is actually dead, superceded by depa +# This namespace is still kept for historical reasons, +# kinda like how packages from Meta still use the `com.facebook` +# namespace +%global fontorg th.or.sipa Version: 20200217 -Release: 3%?dist -Summary: Thai National Fonts collection +Release: 7%{?dist} URL: https://www.nstda.or.th/home/news_post/thai-font/ -License: LicenseRef-DIP-SIPA AND OFL-1.1-RFN -Source0: https://waa.inter.nstda.or.th/stks/pub/%(x=%version;echo ${x:0:4})/%version-13Fonts.zip -Source1: 15-supercede-sarabun.conf -BuildRequires: unzip -Supplements: (default-fonts-th) -BuildArch: noarch -# Sarabun has very tiny latin alphanumeric glyphs, so it's not suitable for general use. -# And this causes legibility issues in many applications that defer to it. -# So let's have Laksaman synthesize it instead. -# TH Sarabun has also been superceded by Google Fonts' Sarabun/TH Sarabun New by the same foundry. (#2482) +%global fontlicense LicenseRef-DIP-SIPA AND OFL-1.1-RFN +%global fontlicenses LICENSE -Recommends: %{lua: -local x = "" -local ver = rpm.expand("%version-%release") -for variant in (rpm.expand("%variants")):gmatch("[^ ]+") do - local v = string.gsub(variant, "_", " ") - local name = "th-"..string.gsub(v:lower(), " ", "-").."-fonts" - if name ~= "th-sarabun-fonts" then - x = x .. name .. " = "..ver.." " - end -end -print(x) -} - -%description +%global common_description %{expand: Thai National Fonts collection, freely-licensed computer fonts for the Thai script sponsored by the Thai government. - - -%{lua: -local summary = rpm.expand("%summary.\n"); -for variant in (rpm.expand("%variants")):gmatch("[^ ]+") do - local v = string.gsub(variant, "_", " ") - local name = "th-"..string.gsub(v:lower(), " ", "-").."-fonts" - print("%package -n "..name.."\n") - print("Summary: Thai "..v.." fonts (sipa-fonts)\n") - print("%description -n "..name.."\n") - print(summary) -end } +# hoo boy, this is gonna be a long one + +Name: sipa-fonts +Provides: %{name} = %{version}-%{release} +Obsoletes: sipa-fonts < 20200217-5 +Packager: Cappy Ishihara +Summary: Thai National Fonts collection +Source0: https://waa.inter.nstda.or.th/stks/pub/%(x=%version;echo ${x:0:4})/%version-13Fonts.zip +Requires: tlwg-laksaman-fonts + +# The packages were renamed +Obsoletes: th-baijam-fonts +Obsoletes: th-chakra-fonts +Obsoletes: th-charm-fonts +Obsoletes: th-charmonman-fonts +Obsoletes: th-fahkwang-fonts +Obsoletes: th-k2d-july8-fonts +Obsoletes: th-kodchasal-fonts +Obsoletes: th-koho-fonts +Obsoletes: th-krub-fonts +Obsoletes: th-mali-grade6-fonts +Obsoletes: th-niramit-as-fonts +Obsoletes: th-sarabun-fonts +Obsoletes: th-sarabunnew-fonts +Obsoletes: th-srisakdi-fonts + +# migration path for old versions +Requires: %{name}-all +# The SIPA license is a custom localized variant of the OFL, +# which means it's open source. It's a one-off license just for +# this package so this is necessary, +# and these fonts are an open-source, state-sponsored package +# required for official Thai documentation +License: LicenseRef-DIP-SIPA +Source2: SIPA-LICENSE +BuildRequires: rpm_macro(fontpkg) +Supplements: (default-fonts-th) +Supplements: langpacks-th-fonts +BuildArch: noarch + +%description +%{common_description} + +%global fontfamily1 TH Sarabun PSK +%global foundry1 Suppakit Chalermlarp +%global fonts1 'TH Sarabun'*.ttf +%global fontsummary1 %{fontfamily1} font family +%global fontdescription1 %{common_description} + +%global fontfamily2 TH Sarabun New +%global foundry2 %foundry1 +%global fontlicense2 OFL-1.1-RFN +%global fonts2 'TH Sarabun New'*.ttf +%global fontsummary2 Revision of the %{fontfamily1} font family +%global fontdescription2 %{common_description} + +%global fontfamily3 TH Charmonman +%global foundry3 Ekkalak Phianphanawet +%global fonts3 'TH Charmonman'*.ttf +%global fontsummary3 %{fontfamily3} font family +%global fontdescription3 %{common_description} + +%global fontfamily4 TH Krub +%global foundry4 Ekkalak Phianphanawet +%global fonts4 'TH Krub'*.ttf +%global fontsummary4 %{fontfamily4} font family +%global fontdescription4 %{common_description} + +%global fontfamily5 TH Srisakdi +%global foundry5 Aksaramethi +%global fonts5 'TH Srisakdi'*.ttf +%global fontsummary5 %{fontfamily5} font family +%global fontdescription5 %{common_description} + +%global fontfamily6 TH Niramit AS +%global foundry6 Aksaramethi +%global fonts6 'TH Niramit AS'*.ttf +%global fontsummary6 %{fontfamily6} font family +%global fontdescription6 %{common_description} + +%global fontfamily7 TH Charm of AU +%global foundry7 Kanlayanamit Noraratphutthi +%global fonts7 'TH Charm of AU'*.ttf +%global fontsummary7 %{fontfamily7} font family +%global fontdescription7 %{common_description} + +%global fontfamily8 TH Kodchasal +%global foundry8 Kansuda Piamprachakphong +%global fonts8 'TH Kodchasal'*.ttf +%global fontsummary8 %{fontfamily8} font family +%global fontdescription8 %{common_description} + +%global fontfamily9 TH K2D July8 +%global foundry9 Kan Rotsawat +%global fonts9 'TH K2D July8'*.ttf +%global fontsummary9 %{fontfamily9} font family +%global fontdescription9 %{common_description} + +%global fontfamily10 TH Mali Grade 6 +%global foundry10 Sudarat Leotsithong +%global fonts10 'TH Mali Grade6'*.ttf +%global fontsummary10 %{fontfamily10} font family +%global fontdescription10 %{common_description} + +%global fontfamily11 TH Chakra Petch +%global foundry11 Thirawat Photwibunsiri +%global fonts11 'TH Chakra Petch'*.ttf +%global fontsummary11 %{fontfamily11} font family +%global fontdescription11 %{common_description} + +%global fontfamily12 TH Bai Jamjuree CP +%global foundry12 PITA +%global fonts12 'TH Baijam'*.ttf +%global fontsummary12 %{fontfamily12} font family +%global fontdescription12 %{common_description} + +%global fontfamily13 TH KoHo +%global foundry13 KoHo +%global fonts13 'TH KoHo'*.ttf +%global fontsummary13 %{fontfamily13} font family +%global fontdescription13 %{common_description} + +%global fontfamily14 TH Fah Kwang +%global foundry14 Team 11 +%global fonts14 'TH Fahkwang'*.ttf +%global fontsummary14 %{fontfamily14} font family +%global fontdescription14 %{common_description} + + +%fontpkg -a +%fontmetapkg +# pull in tlwg-laksaman-fonts +# since this actually provides a fix for TH Sarabun +# (#6929) (#2482) + %prep %autosetup -n Fonts - -# copied from https://www.f0nt.com/about/license/ -cat < LICENSE -สัญญาอนุญาตให้ใช้โปรแกรมคอมพิวเตอร์ฟอนต์ - -ชื่อที่สงวนไว้สำหรับโปรแกรมคอมพิวเตอร์ฟอนต์นี้ -TH Krub, TH Krub Italic, TH Krub Bold, TH Krub Bold Italic, -TH Niramit AS, TH Niramit AS Italic, TH Niramit AS Bold, TH Niramit AS Bold Italic, -TH Kodchasal, TH Kodchasal Italic, TH Kodchasal Bold, TH Kodchasal Bold Italic, -TH Sarabun PSK, TH Sarabun PSK Italic, TH Sarabun PSK Bold, TH Sarabun PSK Bold Italic, -TH K2D July8, TH K2D July8 Italic, TH K2D July8 Bold, TH K2D July8 Bold Italic, -TH Mali Grade 6, TH Mali Grade 6 Italic, TH Mali Grade 6 Bold, TH Mali Grade 6 Bold Italic, -TH Chakra Petch, TH Chakra Petch Italic, TH Chakra Petch Bold, TH Chakra Petch Bold Italic, -TH Baijam, TH Baijam Italic, TH Baijam Bold, TH Baijam Bold Italic, -TH KoHo, TH KoHo Italic, TH KoHo Bold, TH KoHo Bold Italic, -TH Fah Kwang, TH Fah Kwang Italic, TH Fah Kwang Bold, TH Fah Kwang Bold Italic. - -โปรแกรมคอมพิวเตอร์ฟอนต์นี้ เป็นลิขสิทธิ์ร่วมกันของกรมทรัพย์สินทางปัญญา กระทรวงพาณิชย์ และสำนักงานส่งเสริมอุตสาหกรรมซอฟต์แวร์แห่งชาติ (องค์การมหาชน) - -สัญญาอนุญาตให้ใช้โปรแกรมคอมพิวเตอร์ฟอนต์นี้ มีวัตถุประสงค์เพื่อก่อให้เกิดความร่วมมือในการสร้างสรรค์ฟอนต์ในวงกว้าง รวมทั้งเพื่อประโยชน์ทางด้านการศึกษาและการแบ่งปันความรู้และพัฒนาโปรแกรมคอมพิวเตอร์ฟอนต์นี้ - -ข้อกำหนดและเงื่อนไขของสัญญาอนุญาตให้ใช้โปรแกรมคอมพิวเตอร์ฟอนต์นี้ - -(1) อนุญาตให้ใช้ได้โดยไม่คิดค่าใช้จ่ายและอนุญาตให้ทำซ้ำโปรแกรมคอมพิวเตอร์ฟอนต์นี้ได้ รวมทั้งอนุญาตให้ได้ศึกษา ดัดแปลง และแจกจ่ายให้แก่ผู้อื่นได้ ทั้งนี้จะต้องไม่นำโปรแกรมคอมพิวเตอร์ฟอนต์นี้และโปรแกรมคอมพิวเตอร์ฟอนต์ที่ดัดแปลงออกจำหน่าย เว้นแต่เป็นการจำหน่ายรวมติดไปกับโปรแกรมคอมพิวเตอร์อื่น - -(2) ก่อนดำเนินการดัดแปลงโปรแกรมคอมพิวเตอร์ฟอนต์ จะต้องแจ้งให้เจ้าของลิขสิทธิ์ทราบเป็นลายลักษณ์อักษร - -(3) เมื่อดัดแปลงโปรแกรมคอมพิวเตอร์ฟอนต์นี้แล้ว ห้ามผู้ดัดแปลงใช้ชื่อฟอนต์เดิม รวมทั้งห้ามใช้ชื่อเจ้าของลิขสิทธิ์และผู้สร้างสรรค์โปรแกรมคอมพิวเตอร์ฟอนต์นี้ ในการโฆษณาโปรแกรมคอมพิวเตอร์ฟอนต์ที่ได้ดัดแปลง เว้นแต่ได้รับอนุญาตเป็นลายลักษณ์อักษรจากเจ้าของลิขสิทธิ์ - -(4) ผู้ดัดแปลงโปรแกรมคอมพิวเตอร์นี้จะต้องยินยอมให้โปรแกรมคอมพิวเตอร์ฟอนต์ ที่ดัดแปลงขึ้นใหม่มีข้อกำหนดและเงื่อนไขสัญญาอนุญาตให้ใช้โปรแกรมเช่นเดียวกันกับข้อกำหนด และเงื่อนไขของสัญญาอนุญาตนี้เช่นกัน - -ข้อถือสิทธิ -เจ้าของลิขสิทธิ์ไม่รับประกันการใช้งานโปรแกรมคอมพิวเตอร์ฟอนต์และไฟล์ที่เกี่ยวข้องนี้แต่อย่างใด ไม่มีการรับรองว่าโปรแกรมคอมพิวเตอร์ฟอนต์นี้จะทำงานได้อย่างที่ควรจะเป็น และไม่มีการรับรองว่าจะมีการพัฒนาต่อยอดในอนาคต ไม่มีและไม่รับรองว่าจะมีการให้คำแนะนำทางเทคนิคสำหรับโปรแกรมคอมพิวเตอร์ฟอนต์นี้ - - -Font Computer Program License Agreement - -Reserved Font Names for this Font Computer Program: -TH Krub, TH Krub Italic, TH Krub Bold, TH Krub Bold Italic, -TH Niramit AS, TH Niramit AS Italic, TH Niramit AS Bold, TH Niramit AS Bold Italic, -TH Kodchasal, TH Kodchasal Italic, TH Kodchasal Bold, TH Kodchasal Bold Italic, -TH Sarabun PSK, TH Sarabun PSK Italic, TH Sarabun PSK Bold, TH Sarabun PSK Bold Italic, -TH K2D July8, TH K2D July8 Italic, TH K2D July8 Bold, TH K2D July8 Bold Italic, -TH Mali Grade 6, TH Mali Grade 6 Italic, TH Mali Grade 6 Bold, TH Mali Grade 6 Bold Italic, -TH Chakra Petch, TH Chakra Petch Italic, TH Chakra Petch Bold, TH Chakra Petch Bold Italic, -TH Baijam, TH Baijam Italic, TH Baijam Bold, TH Baijam Bold Italic, -TH KoHo, TH KoHo Italic, TH KoHo Bold, TH KoHo Bold Italic, -TH Fah Kwang, TH Fah Kwang Italic, TH Fah Kwang Bold, TH Fah Kwang Bold Italic. - -This Font Computer Program is the copyright of the Department of Intellectual Property (DIP), Ministry of Commerce and the Software Industry Promotion Agency (Public Organization) (SIPA) - -The purposes of this Font Computer Program License are to stimulate worldwide development of cooperative font creation, to benefit for academic, to share and to develop in partnership with others. - -Terms and Conditions of the Font Computer Program - -(1) Allow to use without any charges and allow to reproduce, study, adapt and distribute this Font Computer Program. Neither the original version nor adapted version of Font Computer Program may be sold by itself, except bundled and/or sold with any computer program. - -(2) If you wish to adapt this Font Computer Program, you must notify copyright owners (DIP & SIPA) in writing. - -(3) No adapted version of Font Computer Program may use the Reserved Font Name(s), the name(s) of the copyright owners and the author(s) of the Font Computer Program must not be used to promote or advertise any adapted version, except obtaining written permission from copyright owners and the author(s). - -(4) The adapted version of Font Computer Program must be released under the term and condition of this license. - -DISCLAIMER -THE FONT COMPUTER PROGRAM AND RELATED FILES ARE PROVIDED “AS IS” AND WITHOUT WARRANTY OF ANY KIND. NO GUARANTEES ARE MADE THAT THIS FONT COMPUTER PROGRAM WILL WORK AS EXPECTED OR WILL BE DEVELOPED FURTHUR IN ANY SPECIFIC WAY. THERE IS NO OFFER OR GUARANTEE OF TECHNICAL SUPPORT. - - -EOF +cp -v %{SOURCE2} LICENSE %build - -%install -mkdir -p %buildroot/%_datadir/fonts/sipa/ -mv *.ttf %buildroot/%_datadir/fonts/sipa/ -cd %buildroot/%_datadir/fonts/sipa/ +touch METAPKG mv "THSarabun Bold Italic.ttf" "TH Sarabun Bold Italic.ttf" mv "THSarabun Bold.ttf" "TH Sarabun Bold.ttf" mv "THSarabun BoldItalic.ttf" "TH Sarabun BoldItalic.ttf" mv "THSarabun Italic.ttf" "TH Sarabun Italic.ttf" mv "THSarabun.ttf" "TH Sarabun.ttf" -mv "THSarabunNew Bold.ttf" "TH SarabunNew Bold.ttf" -mv "THSarabunNew BoldItalic.ttf" "TH SarabunNew BoldItalic.ttf" -mv "THSarabunNew Italic.ttf" "TH SarabunNew Italic.ttf" -mv "THSarabunNew.ttf" "TH SarabunNew.ttf" +mv "THSarabunNew Bold.ttf" "TH Sarabun New Bold.ttf" +mv "THSarabunNew BoldItalic.ttf" "TH Sarabun New BoldItalic.ttf" +mv "THSarabunNew Italic.ttf" "TH Sarabun New Italic.ttf" +mv "THSarabunNew.ttf" "TH Sarabun New.ttf" +%fontbuild -a -install -Dm644 %{SOURCE1} %buildroot/%{_sysconfdir}/fonts/conf.d/15-supercede-sarabun.conf +%install +%fontinstall -a +%check +%fontcheck -a %files %license LICENSE -%dir %{_datadir}/fonts/sipa/ - -%{lua: -for variant in (rpm.expand("%variants")):gmatch("[^ ]+") do - local v = string.gsub(variant, "_", " ") - local name = "th-"..string.gsub(v:lower(), " ", "-").."-fonts" - print("%files -n "..name.."\n") - print("%license LICENSE\n") - print("/usr/share/fonts/sipa/TH?"..v:gsub(" ", "?").."*\n") - if name == "th-sarabunnew-fonts" then - print("/etc/fonts/conf.d/15-supercede-sarabun.conf\n") - end -end -} +%fontfiles -a %changelog +* Mon Sep 29 2025 Cappy Ishihara - 20200217-5 +- Use Fedora macros to build and install fonts +- Auto-generate AppStream metadata for fonts + * Sun Jun 11 2023 windowsboy111 - 20200217-1 - Initial package diff --git a/anda/games/8bitdo-udev-rules/71-8bitdo.rules b/anda/games/8bitdo-udev-rules/71-8bitdo.rules new file mode 100644 index 0000000000..218abe085d --- /dev/null +++ b/anda/games/8bitdo-udev-rules/71-8bitdo.rules @@ -0,0 +1,4 @@ +# 2.4GHz/Dongle +KERNEL=="hidraw*", ATTRS{idVendor}=="2dc8", MODE="0660", TAG+="uaccess" +# Bluetooth +KERNEL=="hidraw*", KERNELS=="0005:2DC8:*", MODE="0660", TAG+="uaccess" diff --git a/anda/games/8bitdo-udev-rules/8bitdo-udev-rules.spec b/anda/games/8bitdo-udev-rules/8bitdo-udev-rules.spec new file mode 100644 index 0000000000..6ec82c4927 --- /dev/null +++ b/anda/games/8bitdo-udev-rules/8bitdo-udev-rules.spec @@ -0,0 +1,45 @@ +%global appid com.8bitdo.Udev + + +Name: 8bitdo-udev-rules +Version: 1.1 +Release: 1%{?dist} +Summary: Udev rules for 8Bitdo controllers +Provides: 8bitdo-udev = %{version}-%{release} +License: Unlicense +Source0: 71-8bitdo.rules +Source1: com.8bitdo.Udev.metainfo.xml +BuildArch: noarch +BuildRequires: systemd +BuildRequires: anda-srpm-macros +Requires: systemd-udev + +%global udev_order 71 + +%description +Udev rules for 8Bitdo controllers, for use with Steam Input +and generic gamepad support in Linux. + +%prep + +%build + +%install +install -D -p -m 644 %SOURCE0 %{buildroot}%{_udevrulesdir}/%{udev_order}-8bitdo.rules +%terra_appstream -o %{SOURCE1} + +%post +%udev_rules_update + +%postun +%udev_rules_update + +%files +%_udevrulesdir/%{udev_order}-8bitdo.rules +%{_metainfodir}/%{appid}.metainfo.xml + + + +%changelog +* Thu Sep 04 2025 Cappy Ishihara +- Initial release diff --git a/anda/games/8bitdo-udev-rules/anda.hcl b/anda/games/8bitdo-udev-rules/anda.hcl new file mode 100644 index 0000000000..11d759fd36 --- /dev/null +++ b/anda/games/8bitdo-udev-rules/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + rpm { + spec = "8bitdo-udev-rules.spec" + } + arches = ["x86_64"] +} diff --git a/anda/games/8bitdo-udev-rules/com.8bitdo.Udev.metainfo.xml b/anda/games/8bitdo-udev-rules/com.8bitdo.Udev.metainfo.xml new file mode 100644 index 0000000000..76866e35e3 --- /dev/null +++ b/anda/games/8bitdo-udev-rules/com.8bitdo.Udev.metainfo.xml @@ -0,0 +1,16 @@ + + + com.8bitdo.Udev + udev Rules for 8BitDo devices + +

Udev rules for 8BitDo controllers to enable proper functionality and device access on Linux systems.

+
+ + Shenzhen 8BitDo Tech Co., Ltd. + + + hid:v00002DC8p* + hid:b0003v00002DC8p* + hid:b0005v00002DC8p* + +
\ No newline at end of file diff --git a/anda/games/chess-tui/rust-chess-tui.spec b/anda/games/chess-tui/rust-chess-tui.spec index f3c2c86236..46fea93570 100644 --- a/anda/games/chess-tui/rust-chess-tui.spec +++ b/anda/games/chess-tui/rust-chess-tui.spec @@ -4,8 +4,8 @@ %global crate chess-tui Name: rust-chess-tui -Version: 1.6.1 -Release: %autorelease +Version: 1.6.2 +Release: 1%?dist Summary: Rusty chess game in your terminal 🦀 License: MIT diff --git a/anda/games/emulationstation-de/emulationstation-de.spec b/anda/games/emulationstation-de/emulationstation-de.spec index 93d073b2f1..43a09221f8 100644 --- a/anda/games/emulationstation-de/emulationstation-de.spec +++ b/anda/games/emulationstation-de/emulationstation-de.spec @@ -8,7 +8,7 @@ %bcond_with kms Name: emulationstation-de -Version: 3.3.0 +Version: 3.4.0 Release: 1%?dist Summary: ES-DE is a frontend for browsing and launching games from your multi-platform collection. Packager: Cappy Ishihara diff --git a/anda/games/gamescope-session-steam/gamescope-session-steam.spec b/anda/games/gamescope-session-steam/gamescope-session-steam.spec index fa0143f930..ae08b2e20d 100644 --- a/anda/games/gamescope-session-steam/gamescope-session-steam.spec +++ b/anda/games/gamescope-session-steam/gamescope-session-steam.spec @@ -1,15 +1,15 @@ %define debug_package %nil -%global commit 1a3fdb7fa15a4bba7204bef69702b7a10a297828 +%global commit 93859eaa6056c24a9a6e9bc7464951793a54d3d3 %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global commit_date 20241206 +%global commit_date 20251113 Name: gamescope-session-steam Version: %commit_date.%shortcommit Release: 1%?dist Summary: gamescope-session-steam License: MIT -URL: https://github.com/ChimeraOS/gamescope-session-steam +URL: https://github.com/bazzite-org/gamescope-session-steam Source0: %url/archive/%commit.tar.gz %description @@ -21,20 +21,25 @@ Source0: %url/archive/%commit.tar.gz %build %install -mkdir -p %buildroot -cp -r usr %buildroot/ +mkdir -p %{buildroot}%{_bindir}/ +mkdir -p %{buildroot}%{_datadir}/ +cp -rv usr/bin/* %{buildroot}%{_bindir} +cp -rv usr/share/* %{buildroot}%{_datadir} +rm -rf %{buildroot}%{_bindir}/steamos-polkit-helpers +rm %{buildroot}%{_bindir}/jupiter-biosupdate +# We want to actually keep this for drop-in scripts +# rm %{buildroot}%{_bindir}/steamos-session-select +rm %{buildroot}%{_bindir}/steamos-update + %files %license LICENSE -%_bindir/steamos-polkit-helpers/ -%_bindir/jupiter-biosupdate -%_bindir/steam-http-loader -%_bindir/steamos-select-branch -%_bindir/steamos-session-select -%_bindir/steamos-update -%_datadir/applications/gamescope-mimeapps.list -%_datadir/applications/steam_http_loader.desktop -%_datadir/gamescope-session-plus/sessions.d/steam -%_datadir/polkit-1/actions/org.chimeraos.update.policy -%_datadir/wayland-sessions/gamescope-session-steam.desktop -%_datadir/wayland-sessions/gamescope-session.desktop +%{_bindir}/steam-http-loader +%{_bindir}/steamos-select-branch +%{_bindir}/steamos-session-select +%{_datadir}/applications/gamescope-mimeapps.list +%{_datadir}/applications/steam_http_loader.desktop +%{_datadir}/gamescope-session-plus/sessions.d/steam +%{_datadir}/polkit-1/actions/org.chimeraos.update.policy +%{_datadir}/wayland-sessions/gamescope-session-steam.desktop +%{_datadir}/wayland-sessions/gamescope-session.desktop \ No newline at end of file diff --git a/anda/games/gamescope-session-steam/update.rhai b/anda/games/gamescope-session-steam/update.rhai index 35c20f6c72..570f56cdff 100644 --- a/anda/games/gamescope-session-steam/update.rhai +++ b/anda/games/gamescope-session-steam/update.rhai @@ -1,5 +1,5 @@ if filters.contains("nightly") { - rpm.global("commit", gh_commit("ChimeraOS/gamescope-session-steam")); + rpm.global("commit", gh_commit("bazzite-org/gamescope-session-steam")); if rpm.changed() { rpm.release(); rpm.global("commit_date", date()); diff --git a/anda/games/gamescope-session/gamescope-session.spec b/anda/games/gamescope-session/gamescope-session.spec index c1737193ff..bfb605c1a2 100644 --- a/anda/games/gamescope-session/gamescope-session.spec +++ b/anda/games/gamescope-session/gamescope-session.spec @@ -1,15 +1,15 @@ %define debug_package %nil -%global commit 1c14e09d2cf75c9716fb8ca808d243ea9f5e9154 +%global commit df099b31451531a2bb5a1dc29c93f76bbbab79d0 %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global commit_date 20250802 +%global commit_date 20251109 Name: gamescope-session Version: %commit_date.%shortcommit Release: 1%?dist -Summary: ChimeraOS session on Gamescope +Summary: Gamescope session based on Valve's gamescope License: MIT -URL: https://github.com/ChimeraOS/gamescope-session +URL: https://github.com/bazzite-org/gamescope-session Source0: %url/archive/%commit.tar.gz BuildRequires: systemd-rpm-macros @@ -28,12 +28,13 @@ cp -r usr %buildroot/ %files %doc README.md %license LICENSE -%_bindir/export-gpu -%_bindir/gamescope-session-plus -%_userunitdir/gamescope-session-plus@.service -%_datadir/gamescope-session-plus/device-quirks -%_datadir/gamescope-session-plus/gamescope-session-plus -%_datadir/gamescope/scripts/50-custom/50-disable-explicit-sync.lua +%{_bindir}/export-gpu +%{_bindir}/gamescope-session-plus +%{_datadir}/gamescope-session-plus/device-quirks +%{_datadir}/gamescope-session-plus/gamescope-session-plus +%{_userunitdir}/gamescope-session-plus@.service +%{_userunitdir}/gamescope-session.target + %changelog %autochangelog diff --git a/anda/games/gamescope-session/update.rhai b/anda/games/gamescope-session/update.rhai index bb1b270640..08c489e27a 100644 --- a/anda/games/gamescope-session/update.rhai +++ b/anda/games/gamescope-session/update.rhai @@ -1,5 +1,5 @@ if filters.contains("nightly") { - rpm.global("commit", gh_commit("ChimeraOS/gamescope-session")); + rpm.global("commit", gh_commit("bazzite-org/gamescope-session")); if rpm.changed() { rpm.release(); rpm.global("commit_date", date()); diff --git a/anda/games/inputplumber/inputplumber.spec b/anda/games/inputplumber/inputplumber.spec index 6fd55dec2f..5c0f50b5c1 100644 --- a/anda/games/inputplumber/inputplumber.spec +++ b/anda/games/inputplumber/inputplumber.spec @@ -1,7 +1,7 @@ %global __brp_mangle_shebangs %{nil} Name: inputplumber -Version: 0.62.2 +Version: 0.67.1 Release: 1%?dist Summary: Open source input router and remapper daemon for Linux License: GPL-3.0-or-later diff --git a/anda/games/launcher.moe/anime-game-launcher/anda.hcl b/anda/games/launcher.moe/anime-game-launcher/anda.hcl new file mode 100644 index 0000000000..a581e9bd6c --- /dev/null +++ b/anda/games/launcher.moe/anime-game-launcher/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "anime-game-launcher.spec" + } +} diff --git a/anda/games/launcher.moe/anime-game-launcher/anime-game-launcher.spec b/anda/games/launcher.moe/anime-game-launcher/anime-game-launcher.spec new file mode 100644 index 0000000000..a23f6941ec --- /dev/null +++ b/anda/games/launcher.moe/anime-game-launcher/anime-game-launcher.spec @@ -0,0 +1,76 @@ +%global cargo_install_lib 0 +%global crate anime-game-launcher +%global appid moe.launcher.an-anime-game-launcher +Name: %{crate} +Version: 3.18.0 +Release: 1%?dist +Summary: An Anime Game Launcher for Linux with automatic patching and telemetry disabling + +License: GPL-3.0-or-later +URL: https://github.com/an-anime-team/an-anime-game-launcher +Source0: %{url}/archive/refs/tags/%{version}.tar.gz +Packager: Cappy Ishihara + + +# Allow migrate path from Maroxy's OBS repo +Provides: an-anime-game-launcher = %{version}-%{release} + +Requires: unzip +Requires: cabextract +Requires: tar +Requires: git +Requires: p7zip +Requires: curl +Requires: xdelta +BuildRequires: gtk4 +BuildRequires: git +BuildRequires: rust +BuildRequires: cargo +BuildRequires: gtk4-devel +BuildRequires: openssl-devel +BuildRequires: python3 +BuildRequires: python3-gobject +BuildRequires: libadwaita-devel +BuildRequires: cmake +BuildRequires: gcc clang-devel mold +BuildRequires: rust-packaging +BuildRequires: desktop-file-utils +BuildRequires: anda-srpm-macros +BuildRequires: cargo-rpm-macros +BuildRequires: protobuf-devel protobuf-compiler + + +%description +%{summary} + +%prep +%autosetup -n an-anime-game-launcher-%{version} +%cargo_prep_online + +%build +%cargo_build + +%install +%crate_install_bin + +install -Dm644 assets/images/icon.png %{buildroot}%{_datadir}/icons/hicolor/512x512/apps/%{appid}.png +desktop-file-install \ + --set-icon="%{appid}" \ + --set-key="Exec" --set-value="%{name}" \ + --dir=%{buildroot}%{_datadir}/applications \ + assets/anime-game-launcher.desktop + +%check +desktop-file-validate %{buildroot}/%{_datadir}/applications/anime-game-launcher.desktop + + +%files +%license LICENSE +%doc README.md CHANGELOG.md +%{_datadir}/applications/anime-game-launcher.desktop +%{_bindir}/%{crate} +%{_datadir}/icons/hicolor/512x512/apps/%{appid}.png + +%changelog +* Sat Sep 20 2025 Cappy Ishihara +- Initial package diff --git a/anda/games/launcher.moe/anime-game-launcher/update.rhai b/anda/games/launcher.moe/anime-game-launcher/update.rhai new file mode 100644 index 0000000000..f107988ba4 --- /dev/null +++ b/anda/games/launcher.moe/anime-game-launcher/update.rhai @@ -0,0 +1 @@ +rpm.version(gh_tag("an-anime-team/an-anime-game-launcher")); diff --git a/anda/games/launcher.moe/honkers-launcher/anda.hcl b/anda/games/launcher.moe/honkers-launcher/anda.hcl new file mode 100644 index 0000000000..af7d2ac7e5 --- /dev/null +++ b/anda/games/launcher.moe/honkers-launcher/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "honkers-launcher.spec" + } +} diff --git a/anda/games/launcher.moe/honkers-launcher/honkers-launcher.spec b/anda/games/launcher.moe/honkers-launcher/honkers-launcher.spec new file mode 100644 index 0000000000..b7903ba9dd --- /dev/null +++ b/anda/games/launcher.moe/honkers-launcher/honkers-launcher.spec @@ -0,0 +1,75 @@ +%global cargo_install_lib 0 +%global crate honkers-launcher +%global appid moe.launcher.honkers-launcher +Name: %{crate} +Version: 1.13.0 +Release: 1%?dist +Summary: Honkers Launcher for Linux with automatic patching and telemetry disabling + +License: GPL-3.0-or-later +URL: https://github.com/an-anime-team/honkers-launcher +Source0: %{url}/archive/refs/tags/%{version}.tar.gz +Packager: Cappy Ishihara + + +# Allow migrate path from Maroxy's OBS repo +Provides: honkers-launcher = %{version}-%{release} + +Requires: unzip +Requires: cabextract +Requires: tar +Requires: git +Requires: p7zip +Requires: curl +Requires: xdelta +BuildRequires: gtk4 +BuildRequires: git +BuildRequires: rust +BuildRequires: cargo +BuildRequires: gtk4-devel +BuildRequires: openssl-devel +BuildRequires: python3 +BuildRequires: python3-gobject +BuildRequires: libadwaita-devel +BuildRequires: cmake +BuildRequires: gcc clang-devel mold +BuildRequires: rust-packaging +BuildRequires: desktop-file-utils +BuildRequires: anda-srpm-macros +BuildRequires: cargo-rpm-macros + + +%description +%{summary}. + +%prep +%autosetup -n honkers-launcher-%{version} +%cargo_prep_online + +%build +%cargo_build + +%install +%crate_install_bin + +install -Dm644 assets/images/icon.png %{buildroot}%{_datadir}/icons/hicolor/512x512/apps/%{appid}.png +desktop-file-install \ + --set-icon="%{appid}" \ + --set-key="Exec" --set-value="%{name}" \ + --dir=%{buildroot}%{_datadir}/applications \ + assets/honkers-launcher.desktop + +%check +desktop-file-validate %{buildroot}/%{_datadir}/applications/honkers-launcher.desktop + + +%files +%license LICENSE +%doc README.md CHANGELOG.md +%{_datadir}/applications/honkers-launcher.desktop +%{_bindir}/%{crate} +%{_datadir}/icons/hicolor/512x512/apps/%{appid}.png + +%changelog +* Sat Sep 20 2025 Cappy Ishihara +- Initial package diff --git a/anda/games/launcher.moe/honkers-launcher/update.rhai b/anda/games/launcher.moe/honkers-launcher/update.rhai new file mode 100644 index 0000000000..97dcc4cede --- /dev/null +++ b/anda/games/launcher.moe/honkers-launcher/update.rhai @@ -0,0 +1 @@ +rpm.version(gh_tag("an-anime-team/honkers-launcher")); diff --git a/anda/games/launcher.moe/honkers-railway-launcher/anda.hcl b/anda/games/launcher.moe/honkers-railway-launcher/anda.hcl new file mode 100644 index 0000000000..bac7e2e7bd --- /dev/null +++ b/anda/games/launcher.moe/honkers-railway-launcher/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "honkers-railway-launcher.spec" + } +} diff --git a/anda/games/launcher.moe/honkers-railway-launcher/honkers-railway-launcher.spec b/anda/games/launcher.moe/honkers-railway-launcher/honkers-railway-launcher.spec new file mode 100644 index 0000000000..c6751c53e9 --- /dev/null +++ b/anda/games/launcher.moe/honkers-railway-launcher/honkers-railway-launcher.spec @@ -0,0 +1,75 @@ +%global cargo_install_lib 0 +%global crate honkers-railway-launcher +%global appid moe.launcher.the-honkers-railway-launcher +Name: %{crate} +Version: 1.13.0 +Release: 1%?dist +Summary: The Honkers Railway launcher for Linux with automatic patching and telemetry disabling + +License: GPL-3.0-or-later +URL: https://github.com/an-anime-team/the-honkers-railway-launcher +Source0: %{url}/archive/refs/tags/%{version}.tar.gz +Packager: Cappy Ishihara + + +# Allow migrate path from Maroxy's OBS repo +Provides: the-honkers-railway-launcher = %{version}-%{release} + +Requires: unzip +Requires: cabextract +Requires: tar +Requires: git +Requires: p7zip +Requires: curl +Requires: xdelta +BuildRequires: gtk4 +BuildRequires: git +BuildRequires: rust +BuildRequires: cargo +BuildRequires: gtk4-devel +BuildRequires: openssl-devel +BuildRequires: python3 +BuildRequires: python3-gobject +BuildRequires: libadwaita-devel +BuildRequires: cmake +BuildRequires: gcc clang-devel mold +BuildRequires: rust-packaging +BuildRequires: desktop-file-utils +BuildRequires: anda-srpm-macros +BuildRequires: cargo-rpm-macros + + +%description +%{summary} + +%prep +%autosetup -n the-honkers-railway-launcher-%{version} +%cargo_prep_online + +%build +%cargo_build + +%install +%crate_install_bin + +install -Dm644 assets/images/icon.png %{buildroot}%{_datadir}/icons/hicolor/512x512/apps/%{appid}.png +desktop-file-install \ + --set-icon="%{appid}" \ + --set-key="Exec" --set-value="%{name}" \ + --dir=%{buildroot}%{_datadir}/applications \ + assets/honkers-railway-launcher.desktop + +%check +desktop-file-validate %{buildroot}/%{_datadir}/applications/honkers-railway-launcher.desktop + + +%files +%license LICENSE +%doc README.md CHANGELOG.md +%{_datadir}/applications/honkers-railway-launcher.desktop +%{_bindir}/%{crate} +%{_datadir}/icons/hicolor/512x512/apps/%{appid}.png + +%changelog +* Sat Sep 20 2025 Cappy Ishihara +- Initial package diff --git a/anda/games/launcher.moe/honkers-railway-launcher/update.rhai b/anda/games/launcher.moe/honkers-railway-launcher/update.rhai new file mode 100644 index 0000000000..cde049e69a --- /dev/null +++ b/anda/games/launcher.moe/honkers-railway-launcher/update.rhai @@ -0,0 +1 @@ +rpm.version(gh_tag("an-anime-team/the-honkers-railway-launcher")); diff --git a/anda/games/launcher.moe/sleepy-launcher/anda.hcl b/anda/games/launcher.moe/sleepy-launcher/anda.hcl new file mode 100644 index 0000000000..ceb174b0b2 --- /dev/null +++ b/anda/games/launcher.moe/sleepy-launcher/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "sleepy-launcher.spec" + } +} diff --git a/anda/games/launcher.moe/sleepy-launcher/sleepy-launcher.spec b/anda/games/launcher.moe/sleepy-launcher/sleepy-launcher.spec new file mode 100644 index 0000000000..f19fc9ab60 --- /dev/null +++ b/anda/games/launcher.moe/sleepy-launcher/sleepy-launcher.spec @@ -0,0 +1,75 @@ +%global cargo_install_lib 0 +%global crate sleepy-launcher +%global appid moe.launcher.sleepy-launcher +Name: %{crate} +Version: 1.6.0 +Release: 1%?dist +Summary: Sleepy Game Launcher for Linux with automatic patching and telemetry disabling + +License: GPL-3.0-or-later +URL: https://github.com/an-anime-team/sleepy-launcher +Source0: %{url}/archive/refs/tags/%{version}.tar.gz +Packager: Cappy Ishihara + + +# Allow migrate path from Maroxy's OBS repo +Provides: sleepy-launcher = %{version}-%{release} + +Requires: unzip +Requires: cabextract +Requires: tar +Requires: git +Requires: p7zip +Requires: curl +Requires: xdelta +BuildRequires: gtk4 +BuildRequires: git +BuildRequires: rust +BuildRequires: cargo +BuildRequires: gtk4-devel +BuildRequires: openssl-devel +BuildRequires: python3 +BuildRequires: python3-gobject +BuildRequires: libadwaita-devel +BuildRequires: cmake +BuildRequires: gcc clang-devel mold +BuildRequires: rust-packaging +BuildRequires: desktop-file-utils +BuildRequires: anda-srpm-macros +BuildRequires: cargo-rpm-macros + + +%description +%{summary} + +%prep +%autosetup -n sleepy-launcher-%{version} +%cargo_prep_online + +%build +%cargo_build + +%install +%crate_install_bin + +install -Dm644 assets/images/icon.png %{buildroot}%{_datadir}/icons/hicolor/512x512/apps/%{appid}.png +desktop-file-install \ + --set-icon="%{appid}" \ + --set-key="Exec" --set-value="%{name}" \ + --dir=%{buildroot}%{_datadir}/applications \ + assets/sleepy-launcher.desktop + +%check +desktop-file-validate %{buildroot}/%{_datadir}/applications/sleepy-launcher.desktop + + +%files +%license LICENSE +%doc README.md CHANGELOG.md +%{_datadir}/applications/sleepy-launcher.desktop +%{_bindir}/%{crate} +%{_datadir}/icons/hicolor/512x512/apps/%{appid}.png + +%changelog +* Sat Sep 20 2025 Cappy Ishihara +- Initial package diff --git a/anda/games/launcher.moe/sleepy-launcher/update.rhai b/anda/games/launcher.moe/sleepy-launcher/update.rhai new file mode 100644 index 0000000000..2f7b2512c3 --- /dev/null +++ b/anda/games/launcher.moe/sleepy-launcher/update.rhai @@ -0,0 +1 @@ +rpm.version(gh_tag("an-anime-team/sleepy-launcher")); diff --git a/anda/games/minecraft-java/.gitignore b/anda/games/minecraft-java/.gitignore new file mode 100644 index 0000000000..6131751955 --- /dev/null +++ b/anda/games/minecraft-java/.gitignore @@ -0,0 +1 @@ +*.svg \ No newline at end of file diff --git a/anda/games/minecraft-java/com.mojang.Minecraft.metainfo.xml b/anda/games/minecraft-java/com.mojang.Minecraft.metainfo.xml new file mode 100644 index 0000000000..fce1f57e28 --- /dev/null +++ b/anda/games/minecraft-java/com.mojang.Minecraft.metainfo.xml @@ -0,0 +1,58 @@ + + + com.mojang.Minecraft + Minecraft + ماين كرافت + মাইনক্রাফ্ট + Minecraft + Minecraft + Minecraft + Minecraft + Minecraft + Minecraft + Minecraft + Minecraft + Minecraft + Minecraft + CC0-1.0 + Create your own world in one of the most popular video games + أنشئ عالمك الخاص في واحدة من ألعاب الفيديو الأكثر شعبية + Crea tu propio mundo en este videojuego popular + Créez votre propre univers dans l'un des jeux vidéo les plus populaires + सर्वाधिक लोकप्रिय वीडियो गेम में अपनी खुद की दुनिया बनाएँ + Ciptakan duniamu sendiri di salah satu permainan paling populer ini. + Crie seu próprio mundo em um dos videogames mais populares + Creeaza-ti propria lume in unul dintre cele mai populare jocuri video + สร้างโลกของคุณขึ้นมาใหม่ในหนึ่งในวิดีโอเกมที่เป็นที่นิยมมากที่สุด + Kiến tạo thế giới của riêng bạn trên một trong những trò chơi điện tử phổ biến nhất + 在这款风靡全球的视频游戏中打造属于自己的世界 + 在最受歡迎的電玩遊戲中打造自己的世界 + +

Join people all over the world playing Minecraft, one of the most popular videogames around! Your own imagination is the limit in this fun game where you get to build the world around you. Play with friends, or alone, as you adventure, gather, build, and battle in an incredible land of your very own. For the best experience, we recommend you create an account and purchase online at minecraft.net/en-us/store before installing this app. ** Requires internet.

NOTE: This wrapper is not verified by, affiliated with, or supported by Mojang or Microsoft.

+

انضم للأشخاص الذين يلعبون لُعبة ماين كرافت من جميع أنحاء العالم، وهي واحدة من ألعاب الفيديو الأكثر شعبية الموجودة الآن! خيالك الخاص هو الحد في هذه اللعبة المُمتعة حيث يمكنك بناء العالم من حولك. العب مع الأصدقاء، أو منفرداً، حيث أنك تغامر وتجمع الموارد وتبني وتحارب في أراضٍ مذهلة خاصة بك للغاية. لأفضل تجربة، فإننا ننصح بإنشاء حساب والشراء عبر الإنترنت من خلال minecraft.net/en-us/store/ قبل تثبيت هذا التطبيق. ** يتطلب الإنترنت.

NOTE: This wrapper is not verified by, affiliated with, or supported by Mojang or Microsoft.

+

¡Todo el mundo esta jugando Minecraft, uno de los videojuegos más populares de hoy día! Tu imaginación es el límite en este juego divertido en donde puedes construir el mundo que te rodea. Juega con tus amigos, o solo, y aventura, recolecta, construye y batalla. Para obtener la mejor experiencia, recomendamos crear una cuenta y comprar el juego en línea antes de instalarlo minecraft.net/es-es/store ** Requiere internet.

NOTE: This wrapper is not verified by, affiliated with, or supported by Mojang or Microsoft.

+

Rejoignez les joueurs du monde entier avec Minecraft, l'un des jeux vidéo les plus populaires qui existent ! Testez les limites de votre propre imagination dans ce jeu récréatif où vous devrez construire l'univers qui vous entoure. Jouez seul ou avec des amis, et partez à l'aventure en amassant, construisant et combattant dans ce monde incroyable qui est le vôtre. Pour vivre une expérience parfaite, nous vous recommandons de créer un compte et d'acheter en ligne sur minecraft.net/en-us/store avant d'installer cette appli. ** Nécessite internet.

NOTE: This wrapper is not verified by, affiliated with, or supported by Mojang or Microsoft.

+

दुनियाभर में Minecraft खेलने वाले लोगों से मिलें, जो सर्वाधिक लोकप्रिय वीडियो गेम में से एक है! इस मज़ेदार गेम में आपकी अपनी कल्पना ही सीमा है जहाँ आप अपने आसपास की दुनिया बनाते हैं. अपने मित्रों के साथ या अकेले खेलें, चूँकि आपकी रोमांच यात्रा आपकी अपनी सीमाओं में ही निर्मित होती है. श्रेष्ठ अनुभव के लिए, हम आपको यह ऐप स्थापित करने से पहले एक खाता निर्मित करने और minecraft.net/en-us/store पर इसे खरीदने की सलाह देते हैं. ** इंटरनेट आवश्यक.

NOTE: This wrapper is not verified by, affiliated with, or supported by Mojang or Microsoft.

+

Bergabung dengan orang lain di dunia yang juga memainkan Minecraft, salah satu permainan yang paling populer di dunia. Anda bisa membangun dunia sendiri di game seru ini, satu-satunya batasan adalah imajinasi Anda. Bermain bersama dengan teman, atau sendiri, dimana Anda bisa berpetualang, mengumpulkan, membangun, dan bertarung di tanah ciptaan Anda sendiri. Untuk pengalaman yang paling optimal, sebelum mengunduh game ini, kami sarankan Anda membuat akun dan membeli permainan ini di minecraft.net/en-us/store. **Membutuhkan koneksi internet

NOTE: This wrapper is not verified by, affiliated with, or supported by Mojang or Microsoft.

+

Junte-se a pessoas de todas as partes do mundo jogando Minecraft, um dos videogames mais populares do momento! A sua imaginação é o limite neste jogo divertido que permite construir um mundo próprio. Jogue com amigos ou sozinho, enquanto parte em uma aventura de construções e batalhas nas suas terras incríveis. Para obter a melhor experiência, antes de instalar este app, recomendamos que você crie uma conta e adquira o jogo no site oficial do Minecraft: minecraft.net/pt-br/store ** Necessita internet

NOTE: This wrapper is not verified by, affiliated with, or supported by Mojang or Microsoft.

+

Alatura-te lumii jucand Minecraft, unul dintre cele mai populare jocuri video din jur! Imaginatia ta este limita in acest joc distractiv unde poti construi o lume in jurul tau. Joaca cu prietenii, sau singur, cand te aventurezi, aduni, construiesti, si te lupti in incredibilul taram al tau. Pentru o mai buna experienta, iti recomandam sa iti creezi un cont si sa cumperi online jocul la adresa minecraft.net/en-us/store inainte sa instalezi aplicatia. **Necesita internet.

NOTE: This wrapper is not verified by, affiliated with, or supported by Mojang or Microsoft.

+

ร่วมสนุกสนานไปพร้อมกันกับผู้คนทั่วโลกในการเล่นเกม Minecraft หนึ่งในวิดีโอเกมที่เป็นที่นิยมมากที่สุดในตอนนี้! จินตนาการของคุณคือขีดจำกัดเพียงอย่างเดียวในเกมแสนสนุกนี้ ที่คุณจะได้มีโอกาสสร้างโลกขึ้นมาใหม่รอบตัวคุณ เล่นกับเพื่อนฝูง (หรือจะเล่นคนเดียวก็ได้เช่นกัน) ในขณะที่คุณออกผจญภัย เก็บของป่า ปลูกสิ่งก่อสร้าง และต่อสู้ท่ามกลางผืนดินสุดอัศจรรย์ที่คุณสร้างขึ้นมาด้วยตัวเอง หากต้องการสัมผัสประสบการณ์การเล่นเกมที่ดีที่สุด เราขอแนะนำให้คุณสร้างบัญชีผู้ใช้ขึ้นมาและซื้อออนไลน์ที่ minecraft.net/en-us/store ก่อนที่จะติดตั้งแอปนี้ ** ต้องต่ออินเทอร์เน็ต

NOTE: This wrapper is not verified by, affiliated with, or supported by Mojang or Microsoft.

+

Hãy cùng chơi Minecraft, một trong những trò chơi điện tử phổ biến nhất, với toàn thế giới! Không điều gì có thể giới hạn trí tưởng tượng của riêng bạn trong trò chơi vui nhộn này, nơi bạn sẽ xây dựng thế giới xung quanh mình. Hãy chơi cùng bạn bè hoặc chơi một mình, và hãy phiêu lưu, tụ họp, xây dựng và chiến đấu trên mảnh đất kỳ diệu của riêng mình. Để có trải nghiệm tốt nhất, chúng tôi khuyên bạn nên tạo một tài khoản và mua hàng trực tuyến tại địa chỉ minecraft.net/en-us/store trước khi cài đặt ứng dụng này. **Cần có Internet.

NOTE: This wrapper is not verified by, affiliated with, or supported by Mojang or Microsoft.

+

Minecraft 是一款火爆的视频游戏,在全球有无数的狂热玩家,快来加入他们!在这款充满趣味的游戏中,你可以随心所欲打造属于自己的世界,唯一能够限制你的只有你的想象力。这个神奇的世界完全属于你自己,你可以去冒险、收集资源、建造房屋,还可以跟敌对生物战斗,你可以单人娱乐,也可以多人联机。为了玩得尽兴,建议在线购买并创建一个帐户,网址为:minecraft.net/en-us/store,然后安装此应用** 需要 Internet 连接。

NOTE: This wrapper is not verified by, affiliated with, or supported by Mojang or Microsoft.

+

加入在世界各地遊玩 Minecraft 的人們吧,這是最受歡迎的電玩遊戲之一!在這款有趣的遊戲中,唯有自己的想像力是極限,您必須打造自己週邊的世界。可與好友一起或獨自遊玩,在屬於自己的絕妙世界中探索、收集、建造及戰鬥。為了獲得最佳體驗,建議在安裝此 app 前在 minecraft.net/en-us/store/ 建立帳號並線上購買。** 需要網路

NOTE: This wrapper is not verified by, affiliated with, or supported by Mojang or Microsoft.

+
+ https://minecraft.net + + https://raw.githubusercontent.com/flathub/com.mojang.Minecraft/master/screenshots/minecraft1.png + https://raw.githubusercontent.com/flathub/com.mojang.Minecraft/master/screenshots/minecraft2.png + + + https://d3lapyynmdp1i9.cloudfront.net/thumbnails/com.mojang.Minecraft/com.mojang.minecraft-thumb.jpg + + com.mojang.Minecraft.desktop + LicenseRef-proprietary + + moderate + intense + +
\ No newline at end of file diff --git a/anda/games/minecraft-java/minecraft-java.spec b/anda/games/minecraft-java/minecraft-java.spec index 2df0e94b45..bf908ab92a 100644 --- a/anda/games/minecraft-java/minecraft-java.spec +++ b/anda/games/minecraft-java/minecraft-java.spec @@ -1,8 +1,12 @@ %global debug_package %{nil} +%global appid com.mojang.Minecraft +%global developer Mojang Studios +%global org com.mojang + Name: minecraft-launcher -Version: 2.1.3 -Release: 1%{?dist} +Version: 2.3.2 +Release: 2%{?dist} Summary: Official launcher for Minecraft License: https://www.minecraft.net/en-us/eula @@ -10,10 +14,12 @@ URL: https://minecraft.net Source0: https://launcher.mojang.com/download/Minecraft.tar.gz Source1: minecraft-launcher.desktop Source2: https://launcher.mojang.com/download/minecraft-launcher.svg +Source3: com.mojang.Minecraft.metainfo.xml Packager: Cappy Ishihara ExclusiveArch: x86_64 +BuildRequires: terra-appstream-helper anda-srpm-macros Requires: java >= 1.8.0 Requires: gtk3 Requires: libgpg-error @@ -28,20 +34,17 @@ The official Linux release of the launcher for Minecraft, a game about placing b %build %install -mkdir -p %{buildroot}%{_bindir} -mkdir -p %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps/ -mkdir -p %{buildroot}%{_datadir}/applications/ - -mv %{_builddir}/minecraft-launcher/minecraft-launcher %{buildroot}%{_bindir}/minecraft-launcher -chmod 755 %{buildroot}%{_bindir}/minecraft-launcher - -install -Dm644 %{SOURCE1} %{buildroot}%{_datadir}/applications/minecraft-launcher.desktop -install -Dm644 %{SOURCE2} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps/minecraft-launcher.svg +install -Dm755 %{_builddir}/minecraft-launcher/minecraft-launcher %{buildroot}%{_bindir}/minecraft-launcher +install -Dm644 %{SOURCE1} %{buildroot}%{_datadir}/applications/%{appid}.desktop +install -Dm644 %{SOURCE2} %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/%{appid}.svg +%terra_appstream -o %{SOURCE3} +cat %{buildroot}%{_metainfodir}/%{appid}.metainfo.xml %files %{_bindir}/minecraft-launcher -%{_datadir}/applications/minecraft-launcher.desktop -%{_datadir}/icons/hicolor/symbolic/apps/minecraft-launcher.svg +%{_datadir}/applications/%{appid}.desktop +%{_datadir}/icons/hicolor/scalable/apps/%{appid}.svg +%{_metainfodir}/%{appid}.metainfo.xml %changelog * Tue Mar 08 2022 Thomas Batten - 1121-2 diff --git a/anda/games/minecraft-java/minecraft-launcher.desktop b/anda/games/minecraft-java/minecraft-launcher.desktop index 762c9a8e46..71ebab0f92 100644 --- a/anda/games/minecraft-java/minecraft-launcher.desktop +++ b/anda/games/minecraft-java/minecraft-launcher.desktop @@ -4,7 +4,6 @@ Version=2.0 Name=Minecraft Launcher Comment=Official Minecraft Launcher Exec=/usr/bin/minecraft-launcher -Path=/usr/bin -Icon=minecraft-launcher +Icon=com.mojang.Minecraft Terminal=false Categories=Game;Application; diff --git a/anda/games/opengamepadui/opengamepadui.spec b/anda/games/opengamepadui/opengamepadui.spec index 420e6890ec..090c944611 100644 --- a/anda/games/opengamepadui/opengamepadui.spec +++ b/anda/games/opengamepadui/opengamepadui.spec @@ -1,5 +1,5 @@ Name: opengamepadui -Version: 0.41.0 +Version: 0.42.1 Release: 1%?dist Summary: Open source gamepad-native game launcher and overlay diff --git a/anda/games/osu-lazer/osu-lazer.spec b/anda/games/osu-lazer/osu-lazer.spec index 12bb7b273c..d365d2c1a6 100644 --- a/anda/games/osu-lazer/osu-lazer.spec +++ b/anda/games/osu-lazer/osu-lazer.spec @@ -1,9 +1,9 @@ -%define osuresver 2025.819.0 +%define osuresver 2025.1028.0 %global debug_package %{nil} %define __strip /bin/true Name: osu-lazer -Version: 2025.816.0 +Version: 2025.1029.1 Release: 1%?dist Summary: The future of osu! and the beginning of an open era! Commonly known by the codename osu!lazer. Pew pew. ExclusiveArch: x86_64 diff --git a/anda/games/prismlauncher-nightly/anda.hcl b/anda/games/prismlauncher-nightly/anda.hcl index 7d609cf7e9..061a1307db 100644 --- a/anda/games/prismlauncher-nightly/anda.hcl +++ b/anda/games/prismlauncher-nightly/anda.hcl @@ -4,7 +4,7 @@ project pkg { extra_repos = ["https://packages.adoptium.net/artifactory/rpm/fedora/\\$releasever/\\$basearch"] } labels { - nightly = "1" + nightly = 1 mock = 1 } } diff --git a/anda/games/prismlauncher-nightly/nightly.xml b/anda/games/prismlauncher-nightly/nightly.xml new file mode 100644 index 0000000000..d88cff52b2 --- /dev/null +++ b/anda/games/prismlauncher-nightly/nightly.xml @@ -0,0 +1,4 @@ + + org.prismlauncher.PrismLauncher-nightly + Prism Launcher (Nightly) + diff --git a/anda/games/prismlauncher-nightly/prismlauncher-nightly.spec b/anda/games/prismlauncher-nightly/prismlauncher-nightly.spec index dd0ee5f0b3..b15fbd921e 100644 --- a/anda/games/prismlauncher-nightly/prismlauncher-nightly.spec +++ b/anda/games/prismlauncher-nightly/prismlauncher-nightly.spec @@ -1,10 +1,12 @@ %global real_name prismlauncher %global nice_name PrismLauncher +%global name_pretty %{quote:Prism Launcher (Nightly)} +%global appid org.prismlauncher.PrismLauncher-nightly -%global commit 5480ce6b4418819ee0465fd96919167150a07c43 +%global commit c7fa69cfd0c6e331d8b3bfa77dcb98d1beea34d0 %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global commit_date 20250822 +%global commit_date 20251120 %global snapshot_info %{commit_date}.%{shortcommit} %bcond_without qt6 @@ -36,10 +38,12 @@ License: GPL-3.0-only AND Apache-2.0 AND LGPL-3.0-only AND GPL-3.0-or-l Group: Amusements/Games URL: https://prismlauncher.org/ Patch0: 0001-find-cmark-with-pkgconfig.patch +Source2: nightly.xml BuildRequires: cmake >= 3.15 BuildRequires: extra-cmake-modules BuildRequires: gcc-c++ +BuildRequires: terra-appstream-helper # JDKs less than the most recent release & LTS are no longer in the default # Fedora repositories # Make sure you have Adoptium's repositories enabled @@ -55,6 +59,7 @@ BuildRequires: desktop-file-utils BuildRequires: libappstream-glib BuildRequires: tomlplusplus-devel BuildRequires: cmake(ghc_filesystem) +BuildRequires: qrencode-devel BuildRequires: cmake(Qt%{qt_version}Concurrent) >= %{min_qt_version} BuildRequires: cmake(Qt%{qt_version}Core) >= %{min_qt_version} BuildRequires: cmake(Qt%{qt_version}Gui) >= %{min_qt_version} @@ -138,7 +143,8 @@ sed -i "s|\$ORIGIN/||" CMakeLists.txt %install %cmake_install - +%terra_appstream -o %{SOURCE2} +rm -f %{buildroot}%{_datadir}/metainfo/org.prismlauncher.PrismLauncher.metainfo.xml %check %ctest @@ -154,7 +160,7 @@ sed -i "s|\$ORIGIN/||" CMakeLists.txt %{_datadir}/%{nice_name}/qtlogging.ini %{_datadir}/%{nice_name}/NewLaunchLegacy.jar %{_datadir}/applications/org.prismlauncher.PrismLauncher.desktop -%{_metainfodir}/org.prismlauncher.PrismLauncher.metainfo.xml +%{_metainfodir}/%{appid}.metainfo.xml %{_datadir}/icons/hicolor/scalable/apps/org.prismlauncher.PrismLauncher.svg %{_datadir}/mime/packages/modrinth-mrpack-mime.xml %{_datadir}/qlogging-categories%{qt_version}/prismlauncher.categories diff --git a/anda/games/prismlauncher/prismlauncher.spec b/anda/games/prismlauncher/prismlauncher.spec index 817e6063de..5ce757dfe7 100644 --- a/anda/games/prismlauncher/prismlauncher.spec +++ b/anda/games/prismlauncher/prismlauncher.spec @@ -1,6 +1,7 @@ %global real_name prismlauncher %global nice_name PrismLauncher %bcond_without qt6 +%global appid org.prismlauncher.PrismLauncher # Change this variables if you want to use custom keys # Leave blank if you want to build Prism Launcher without MSA id or curseforge api key @@ -23,7 +24,7 @@ Name: prismlauncher Name: prismlauncher-qt5 %endif Version: 9.4 -Release: 1%?dist +Release: 2%?dist Summary: Minecraft launcher with ability to manage multiple instances # see COPYING.md for more information # each file in the source also contains a SPDX-License-Identifier header that declares its license @@ -45,6 +46,7 @@ BuildRequires: temurin-17-jdk %else BuildRequires: java-17-openjdk-devel %endif +BuildRequires: anda-srpm-macros BuildRequires: desktop-file-utils BuildRequires: libappstream-glib BuildRequires: cmake(ghc_filesystem) @@ -57,6 +59,7 @@ BuildRequires: cmake(Qt%{qt_version}Widgets) >= %{min_qt_version} BuildRequires: cmake(Qt%{qt_version}Xml) >= %{min_qt_version} BuildRequires: cmake(Qt%{qt_version}NetworkAuth) >= %{min_qt_version} BuildRequires: tomlplusplus-devel +BuildRequires: qrencode-devel %if %{with qt6} BuildRequires: cmake(Qt6Core5Compat) @@ -129,7 +132,7 @@ sed -i "s|\$ORIGIN/||" CMakeLists.txt %install %cmake_install - +%terra_appstream %check %ctest diff --git a/anda/games/rpcs3/rpcs3.spec b/anda/games/rpcs3/rpcs3.spec index 686b28eaa2..9a786a19c3 100644 --- a/anda/games/rpcs3/rpcs3.spec +++ b/anda/games/rpcs3/rpcs3.spec @@ -1,13 +1,18 @@ %global _distro_extra_cflags -Wno-uninitialized %global _distro_extra_cxxflags -include %_includedir/c++/*/cstdint +# Define which LLVM/Clang version RPCS3 needs +%if %{?fedora} >= 43 +%global llvm_major 20 +%bcond llvm_compat 1 +%endif # GLIBCXX_ASSERTIONS is known to break RPCS3 %global build_cflags %(echo %{__build_flags_lang_c} | sed 's/-Wp,-D_GLIBCXX_ASSERTIONS//g') %{?_distro_extra_cflags} %global build_cxxflags %(echo %{__build_flags_lang_cxx} | sed 's/-Wp,-D_GLIBCXX_ASSERTIONS//g') %{?_distro_extra_cxxflags} # Need to get rid of everything Clang can't use and undefine -Wunused-command-line-argument where possible due to the project's build flags %global build_cflags %(echo %{build_cflags} | sed 's:-Werror ::g' | sed 's:-Wunused-command-line-argument ::g' | sed 's:-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 ::g' | sed 's:-specs=/usr/lib/rpm/redhat/redhat-hardened-ld ::g' | sed 's:-specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors ::g' | sed 's:-specs=/usr/lib/rpm/redhat/redhat-package-notes ::g') -Wno-unused-command-line-argument %global build_cxxflags %(echo %{build_cxxflags} | sed 's:-Werror ::g' | sed 's:-Wunused-command-line-argument ::g' | sed 's:-specs\=/usr/lib/rpm/redhat/redhat-annobin-cc1 ::g' | sed 's:-specs=/usr/lib/rpm/redhat/redhat-hardened-ld ::g' | sed 's:-specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors ::g' | sed 's:-specs=/usr/lib/rpm/redhat/redhat-package-notes ::g') -Wno-unused-command-line-argument -%global commit 4800aa9bfc01eff958345874186eaf4163f12f6a -%global ver 0.0.37-18117 +%global commit 8ccc30725a661b5355d3e46e2a7410163d335ebc +%global ver 0.0.38-18367 Name: rpcs3 Version: %(echo %{ver} | sed 's/-/^/g') @@ -17,7 +22,8 @@ License: GPL-2.0-only URL: https://github.com/RPCS3/rpcs3 %dnl Source0: %url/archive/refs/tags/v%version.tar.gz BuildRequires: anda-srpm-macros glew openal-soft cmake vulkan-validation-layers git-core mold -BuildRequires: clang +BuildRequires: llvm%{?llvm_major}-devel +BuildRequires: clang%{?llvm_major} BuildRequires: cmake(FAudio) BuildRequires: cmake(OpenAL) BuildRequires: cmake(OpenCV) @@ -52,7 +58,7 @@ BuildRequires: pkgconfig(wayland-server) BuildRequires: pkgconfig(wayland-cursor) #BuildRequires: pkgconfig(wayland-eglstream) BuildRequires: doxygen -BuildRequires: qt6-qtbase-private-devel vulkan-devel jack-audio-connection-kit-devel llvm-devel +BuildRequires: qt6-qtbase-private-devel vulkan-devel jack-audio-connection-kit-devel %description %summary. @@ -62,6 +68,9 @@ BuildRequires: qt6-qtbase-private-devel vulkan-devel jack-audio-connection-kit- %build # Looking at the CMakeLists.txt, this is the intended compiler and there are no fixes for GCC on aarch64 +%if %{with llvm_compat} +export LLVM_DIR=%{_libdir}/llvm%{?llvm_major}/%{_lib}/cmake +%endif %cmake -DDISABLE_LTO=TRUE \ -DZSTD_BUILD_STATIC=ON \ -DCMAKE_SKIP_RPATH=ON \ @@ -84,8 +93,13 @@ BuildRequires: qt6-qtbase-private-devel vulkan-devel jack-audio-connection-kit- -DUSE_SYSTEM_FLATBUFFERS=OFF \ -DUSE_SYSTEM_PUGIXML=OFF \ -DUSE_SYSTEM_WOLFSSL=OFF \ +%if %{with llvm_compat} + -DCMAKE_C_COMPILER=clang-%{?llvm_major} \ + -DCMAKE_CXX_COMPILER=clang++-%{?llvm_major} \ +%else -DCMAKE_C_COMPILER=clang \ -DCMAKE_CXX_COMPILER=clang++ \ +%endif -DCMAKE_LINKER=mold \ -DCMAKE_SHARED_LINKER_FLAGS="$LDFLAGS -fuse-ld=mold" \ -DCMAKE_EXE_LINKER_FLAGS="$LDFLAGS -fuse-ld=mold" diff --git a/anda/games/steam/steam.spec b/anda/games/steam/steam.spec index 1cb401d912..ee21b44b5b 100644 --- a/anda/games/steam/steam.spec +++ b/anda/games/steam/steam.spec @@ -4,8 +4,8 @@ %global appstream_id com.valvesoftware.Steam Name: steam -Version: 1.0.0.84 -Release: 1%?dist +Version: 1.0.0.85 +Release: 2%?dist Summary: Installer for the Steam software distribution service # Redistribution and repackaging for Linux is allowed, see license file. udev rules are MIT. License: Steam License Agreement and MIT @@ -24,14 +24,11 @@ Source5: https://github.com/terrapkg/pkg-steam/raw/refs/heads/main/README # https://github.com/denilsonsa/udev-joystick-blacklist # https://github.com/systemd/systemd/issues/32773 -# Input devices seen as joysticks: -Source6: https://raw.githubusercontent.com/denilsonsa/udev-joystick-blacklist/master/after_kernel_4_9/51-these-are-not-joysticks-rm.rules - # Configure limits in systemd -Source7: https://github.com/terrapkg/pkg-steam/raw/refs/heads/main/01-steam.conf +Source6: https://github.com/terrapkg/pkg-steam/raw/refs/heads/main/01-steam.conf # Steam restart script -Source9: steamrestart.sh +Source7: steamrestart.sh # Do not install desktop file in lib/steam, do not install apt sources Patch0: https://github.com/terrapkg/pkg-steam/raw/refs/heads/main/steam-makefile.patch @@ -130,7 +127,10 @@ Recommends: xdg-user-dirs Recommends: gobject-introspection Requires: steam-devices -Requires: steam-device-rules + +# -rm is usually better for Steam +Recommends: udev-joystick-blacklist-rm +Requires: (udev-joystick-blacklist-rm or udev-joystick-blacklist) # Workaround for GNOME issues with libei Recommends: (extest-%{name} if gnome-shell) @@ -142,14 +142,6 @@ and screenshot functionality, and many social features. This package contains the installer for the Steam software distribution service. -%package device-rules -Summary: Fix for keyboard/mouse/tablet being detected as joystick in Linux -Obsoletes: steam-devices < %{version}-%{release} -BuildArch: noarch - -%description device-rules -This package contains fixes for devices being detected incorrectly by Steam. - %prep %autosetup -p1 -n %{name}-launcher @@ -164,10 +156,6 @@ cp %{SOURCE5} . rm -fr %{buildroot}%{_docdir}/%{name}/ \ %{buildroot}%{_bindir}/%{name}deps -mkdir -p %{buildroot}%{_udevrulesdir}/ -install -m 644 -p %{SOURCE6} \ - %{buildroot}%{_udevrulesdir}/ - # Environment files mkdir -p %{buildroot}%{_sysconfdir}/profile.d install -pm 644 %{SOURCE1} %{SOURCE2} %{buildroot}%{_sysconfdir}/profile.d @@ -175,9 +163,9 @@ install -pm 644 %{SOURCE1} %{SOURCE2} %{buildroot}%{_sysconfdir}/profile.d # Raise file descriptor limit mkdir -p %{buildroot}%{_prefix}/lib/systemd/system.conf.d/ mkdir -p %{buildroot}%{_prefix}/lib/systemd/user.conf.d/ -install -m 644 -p %{SOURCE7} %{buildroot}%{_prefix}/lib/systemd/system.conf.d/ -install -m 644 -p %{SOURCE7} %{buildroot}%{_prefix}/lib/systemd/user.conf.d/ -install -m 775 -p %{SOURCE9} %{buildroot}%{_bindir}/steamrestart +install -m 644 -p %{SOURCE6} %{buildroot}%{_prefix}/lib/systemd/system.conf.d/ +install -m 644 -p %{SOURCE6} %{buildroot}%{_prefix}/lib/systemd/user.conf.d/ +install -m 775 -p %{SOURCE7} %{buildroot}%{_bindir}/steamrestart # https://github.com/ValveSoftware/steam-for-linux/issues/9940 desktop-file-edit --remove-key=PrefersNonDefaultGPU %{buildroot}%{_datadir}/applications/%{name}.desktop @@ -206,9 +194,6 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%{appstream_id %dir %{_prefix}/lib/systemd/user.conf.d/ %{_prefix}/lib/systemd/user.conf.d/01-steam.conf -%files device-rules -%{_udevrulesdir}/51-these-are-not-joysticks-rm.rules - %changelog * Sun Sep 01 2024 Simone Caronni - 1.0.0.81-1 - Update to 1.0.0.81. diff --git a/anda/games/terra-gamescope/handheld.patch b/anda/games/terra-gamescope/handheld.patch index abac2aba08..fcd7cb87f3 100755 --- a/anda/games/terra-gamescope/handheld.patch +++ b/anda/games/terra-gamescope/handheld.patch @@ -1,2576 +1,3 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Joshua Ashton -Date: Thu, 21 Nov 2024 07:18:22 +0000 -Subject: Revert "steamcompmgr: Fix crash when using magnifier and game - recording" - -This reverts commit 611a47683f8304ae7a128347a2237df345482fcd. ---- - src/steamcompmgr.cpp | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp -index a8f44d1ef2da..0a1f2b263b21 100644 ---- a/src/steamcompmgr.cpp -+++ b/src/steamcompmgr.cpp -@@ -1974,7 +1974,7 @@ paint_window_commit( const gamescope::Rc &lastCommit, steamcompmgr_win - drawYOffset += w->GetGeometry().nY * currentScaleRatio_y; - } - -- if ( cursor && zoomScaleRatio != 1.0 ) -+ if ( zoomScaleRatio != 1.0 ) - { - drawXOffset += (((int)sourceWidth / 2) - cursor->x()) * currentScaleRatio_x; - drawYOffset += (((int)sourceHeight / 2) - cursor->y()) * currentScaleRatio_y; -@@ -2200,10 +2200,10 @@ static void paint_pipewire() - s_ulLastOverrideCommitId = ulOverrideCommitId; - - // Paint the windows we have onto the Pipewire stream. -- paint_window( pFocus->focusWindow, pFocus->focusWindow, &frameInfo, global_focus.cursor, 0, 1.0f, pFocus->overrideWindow ); -+ paint_window( pFocus->focusWindow, pFocus->focusWindow, &frameInfo, nullptr, 0, 1.0f, pFocus->overrideWindow ); - - if ( pFocus->overrideWindow && !pFocus->focusWindow->isSteamStreamingClient ) -- paint_window( pFocus->overrideWindow, pFocus->focusWindow, &frameInfo, global_focus.cursor, PaintWindowFlag::NoFilter, 1.0f, pFocus->overrideWindow ); -+ paint_window( pFocus->overrideWindow, pFocus->focusWindow, &frameInfo, nullptr, PaintWindowFlag::NoFilter, 1.0f, pFocus->overrideWindow ); - - gamescope::Rc pRGBTexture = s_pPipewireBuffer->texture->isYcbcr() - ? vulkan_acquire_screenshot_texture( g_nOutputWidth, g_nOutputHeight, false, DRM_FORMAT_XRGB2101010 ) --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Joshua Ashton -Date: Thu, 21 Nov 2024 07:19:00 +0000 -Subject: backend: Hack - ---- - src/backend.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/backend.cpp b/src/backend.cpp -index 8a6bbe8ed944..2411d4ebdc48 100644 ---- a/src/backend.cpp -+++ b/src/backend.cpp -@@ -56,7 +56,7 @@ namespace gamescope - CBaseBackendFb::~CBaseBackendFb() - { - // I do not own the client buffer, but I released that in DecRef. -- assert( !HasLiveReferences() ); -+ //assert( !HasLiveReferences() ); - } - - uint32_t CBaseBackendFb::IncRef() --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Matthew Schwartz -Date: Fri, 31 Jan 2025 17:21:47 -0800 -Subject: layer: Fix 32-bit layer crash -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Some fprintf pointers added in "layer: Fix oldSwapchain when going in/out -of XWayland bypassing" will crash when executed in the 32-bit WSI layer. - -GCC also warns about the pointer usage when compiling the 32-bit layer: -"warning: format ‘%p’ expects argument of type ‘void*’, but argument 3 -has type ‘VkSwapchainKHR’ {aka ‘long long unsigned int’} [-Wformat=]" - -To keep it simple, let's just reinterpret_cast the problematic pointers -to void*. - -Closes: #1718 -Closes: #1736 ---- - layer/VkLayer_FROG_gamescope_wsi.cpp | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/layer/VkLayer_FROG_gamescope_wsi.cpp b/layer/VkLayer_FROG_gamescope_wsi.cpp -index 718a2604f318..5bd1408bf780 100644 ---- a/layer/VkLayer_FROG_gamescope_wsi.cpp -+++ b/layer/VkLayer_FROG_gamescope_wsi.cpp -@@ -1076,9 +1076,9 @@ namespace GamescopeWSILayer { - gamescope_swapchain_destroy(state->object); - } - GamescopeSwapchain::remove(swapchain); -- fprintf(stderr, "[Gamescope WSI] Destroying swapchain: %p\n", swapchain); -+ fprintf(stderr, "[Gamescope WSI] Destroying swapchain: %p\n", reinterpret_cast(swapchain)); - pDispatch->DestroySwapchainKHR(device, swapchain, pAllocator); -- fprintf(stderr, "[Gamescope WSI] Destroyed swapchain: %p\n", swapchain); -+ fprintf(stderr, "[Gamescope WSI] Destroyed swapchain: %p\n", reinterpret_cast(swapchain)); - } - - static VkResult CreateSwapchainKHR( -@@ -1160,7 +1160,7 @@ namespace GamescopeWSILayer { - - fprintf(stderr, "[Gamescope WSI] Creating swapchain for xid: 0x%0x - oldSwapchain: %p - provided minImageCount: %u - minImageCount: %u - format: %s - colorspace: %s - flip: %s\n", - gamescopeSurface->window, -- pCreateInfo->oldSwapchain, -+ reinterpret_cast(pCreateInfo->oldSwapchain), - pCreateInfo->minImageCount, - minImageCount, - vkroots::helpers::enumString(pCreateInfo->imageFormat), -@@ -1241,7 +1241,7 @@ namespace GamescopeWSILayer { - - fprintf(stderr, "[Gamescope WSI] Created swapchain for xid: 0x%0x swapchain: %p - imageCount: %u\n", - gamescopeSurface->window, -- *pSwapchain, -+ reinterpret_cast(*pSwapchain), - imageCount); - - gamescope_swapchain_swapchain_feedback( --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Matthew Schwartz -Date: Sun, 5 Jan 2025 11:05:42 +0900 -Subject: main: cleanup args - ---- - src/main.cpp | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/main.cpp b/src/main.cpp -index 9dff5c4d8560..cd251af559e1 100644 ---- a/src/main.cpp -+++ b/src/main.cpp -@@ -70,6 +70,7 @@ const struct option *gamescope_options = (struct option[]){ - { "expose-wayland", no_argument, 0 }, - { "mouse-sensitivity", required_argument, nullptr, 's' }, - { "mangoapp", no_argument, nullptr, 0 }, -+ { "adaptive-sync", no_argument, nullptr, 0 }, - - { "backend", required_argument, nullptr, 0 }, - -@@ -88,7 +89,6 @@ const struct option *gamescope_options = (struct option[]){ - { "default-touch-mode", required_argument, nullptr, 0 }, - { "generate-drm-mode", required_argument, nullptr, 0 }, - { "immediate-flips", no_argument, nullptr, 0 }, -- { "adaptive-sync", no_argument, nullptr, 0 }, - { "framerate-limit", required_argument, nullptr, 0 }, - - // openvr options -@@ -203,6 +203,7 @@ const char usage[] = - " Default: 1000 nits, Max: 10000 nits\n" - " --framerate-limit Set a simple framerate limit. Used as a divisor of the refresh rate, rounds down eg 60 / 59 -> 60fps, 60 / 25 -> 30fps. Default: 0, disabled.\n" - " --mangoapp Launch with the mangoapp (mangohud) performance overlay enabled. You should use this instead of using mangohud on the game or gamescope.\n" -+ " --adaptive-sync Enable adaptive sync if available (variable rate refresh)\n" - "\n" - "Nested mode options:\n" - " -o, --nested-unfocused-refresh game refresh rate when unfocused\n" -@@ -213,11 +214,10 @@ const char usage[] = - " --display-index forces gamescope to use a specific display in nested mode." - "\n" - "Embedded mode options:\n" -- " -O, --prefer-output list of connectors in order of preference\n" -+ " -O, --prefer-output list of connectors in order of preference (ex: DP-1,DP-2,DP-3,HDMI-A-1)\n" - " --default-touch-mode 0: hover, 1: left, 2: right, 3: middle, 4: passthrough\n" - " --generate-drm-mode DRM mode generation algorithm (cvt, fixed)\n" - " --immediate-flips Enable immediate flips, may result in tearing\n" -- " --adaptive-sync Enable adaptive sync if available (variable rate refresh)\n" - "\n" - #if HAVE_OPENVR - "VR mode options:\n" --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?R=C3=A9mi=20Bernon?= -Date: Wed, 29 Jan 2025 11:16:47 +0100 -Subject: steamcompmgr: Set WM_STATE property on map and unmap notify events. - -This is mandated by the ICCCM specification and Wine now depends on it. ---- - src/steamcompmgr.cpp | 21 +++++++++++++-------- - 1 file changed, 13 insertions(+), 8 deletions(-) - -diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp -index 0a1f2b263b21..2544acfb0501 100644 ---- a/src/steamcompmgr.cpp -+++ b/src/steamcompmgr.cpp -@@ -3378,6 +3378,14 @@ found:; - return vecPossibleFocusWindows; - } - -+static void set_wm_state( xwayland_ctx_t *ctx, Window win, uint32_t state ) -+{ -+ uint32_t wmState[] = { state, None }; -+ XChangeProperty(ctx->dpy, win, ctx->atoms.WMStateAtom, ctx->atoms.WMStateAtom, 32, -+ PropModeReplace, (unsigned char *)wmState, -+ sizeof(wmState) / sizeof(wmState[0])); -+} -+ - void xwayland_ctx_t::DetermineAndApplyFocus( const std::vector< steamcompmgr_win_t* > &vecPossibleFocusWindows ) - { - xwayland_ctx_t *ctx = this; -@@ -3438,10 +3446,7 @@ void xwayland_ctx_t::DetermineAndApplyFocus( const std::vector< steamcompmgr_win - { - /* Some games (e.g. DOOM Eternal) don't react well to being put back as - * iconic, so never do that. Only take them out of iconic. */ -- uint32_t wmState[] = { ICCCM_NORMAL_STATE, None }; -- XChangeProperty(ctx->dpy, ctx->focus.focusWindow->xwayland().id, ctx->atoms.WMStateAtom, ctx->atoms.WMStateAtom, 32, -- PropModeReplace, (unsigned char *)wmState, -- sizeof(wmState) / sizeof(wmState[0])); -+ set_wm_state( ctx, ctx->focus.focusWindow->xwayland().id, ICCCM_NORMAL_STATE ); - - gpuvis_trace_printf( "determine_and_apply_focus focus %lu", ctx->focus.focusWindow->xwayland().id ); - -@@ -4227,6 +4232,8 @@ map_win(xwayland_ctx_t* ctx, Window id, unsigned long sequence) - } - - MakeFocusDirty(); -+ -+ set_wm_state( ctx, w->xwayland().id, ICCCM_NORMAL_STATE ); - } - - static void -@@ -4251,6 +4258,7 @@ unmap_win(xwayland_ctx_t *ctx, Window id, bool fade) - MakeFocusDirty(); - - finish_unmap_win(ctx, w); -+ set_wm_state( ctx, w->xwayland().id, ICCCM_WITHDRAWN_STATE ); - } - - uint32_t -@@ -4817,10 +4825,7 @@ handle_wm_change_state(xwayland_ctx_t *ctx, steamcompmgr_win_t *w, XClientMessag - * agreed on it; immediately revert to normal state to avoid being - * stuck in a paused state. */ - xwm_log.debugf("Rejecting WM_CHANGE_STATE to ICONIC for window 0x%lx", w->xwayland().id); -- uint32_t wmState[] = { ICCCM_NORMAL_STATE, None }; -- XChangeProperty(ctx->dpy, w->xwayland().id, ctx->atoms.WMStateAtom, ctx->atoms.WMStateAtom, 32, -- PropModeReplace, (unsigned char *)wmState, -- sizeof(wmState) / sizeof(wmState[0])); -+ set_wm_state( ctx, w->xwayland().id, ICCCM_NORMAL_STATE ); - } else { - xwm_log.debugf("Unhandled WM_CHANGE_STATE to %ld for window 0x%lx", state, w->xwayland().id); - } --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Autumn Ashton -Date: Tue, 1 Apr 2025 23:37:29 +0100 -Subject: rendervulkan: Fix scaled YUV coming out weird - -Our linear emulation doesn't fully support unnormalized right now. ---- - src/rendervulkan.hpp | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/rendervulkan.hpp b/src/rendervulkan.hpp -index d8a24e93795a..a3a11a7ba96f 100644 ---- a/src/rendervulkan.hpp -+++ b/src/rendervulkan.hpp -@@ -325,6 +325,9 @@ struct FrameInfo_t - } - - bool viewConvertsToLinearAutomatically() const { -+ if (isYcbcr()) -+ return true; -+ - return colorspace == GAMESCOPE_APP_TEXTURE_COLORSPACE_LINEAR || - colorspace == GAMESCOPE_APP_TEXTURE_COLORSPACE_SCRGB || - colorspace == GAMESCOPE_APP_TEXTURE_COLORSPACE_PASSTHRU; -@@ -362,7 +365,7 @@ struct FrameInfo_t - uint32_t result = 0; - for (int i = 0; i < layerCount; i++) - { -- result |= layers[ i ].colorspace << (i * GamescopeAppTextureColorspace_Bits); -+result |= layers[ i ].colorspace << (i * GamescopeAppTextureColorspace_Bits); - } - return result; - } --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Autumn Ashton -Date: Wed, 2 Apr 2025 01:09:56 +0100 -Subject: steamcompmgr: Fix pipewire stream being incorrect size on external - displays when scaled up - ---- - src/steamcompmgr.cpp | 18 +++++++++++++++--- - 1 file changed, 15 insertions(+), 3 deletions(-) - -diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp -index 2544acfb0501..7371a3905b56 100644 ---- a/src/steamcompmgr.cpp -+++ b/src/steamcompmgr.cpp -@@ -2199,6 +2199,17 @@ static void paint_pipewire() - s_ulLastFocusCommitId = ulFocusCommitId; - s_ulLastOverrideCommitId = ulOverrideCommitId; - -+ uint32_t uWidth = s_pPipewireBuffer->texture->width(); -+ uint32_t uHeight = s_pPipewireBuffer->texture->height(); -+ -+ const uint32_t uCompositeDebugBackup = g_uCompositeDebug; -+ const uint32_t uBackupWidth = currentOutputWidth; -+ const uint32_t uBackupHeight = currentOutputHeight; -+ -+ g_uCompositeDebug = 0; -+ currentOutputWidth = uWidth; -+ currentOutputHeight = uHeight; -+ - // Paint the windows we have onto the Pipewire stream. - paint_window( pFocus->focusWindow, pFocus->focusWindow, &frameInfo, nullptr, 0, 1.0f, pFocus->overrideWindow ); - -@@ -2206,13 +2217,11 @@ static void paint_pipewire() - paint_window( pFocus->overrideWindow, pFocus->focusWindow, &frameInfo, nullptr, PaintWindowFlag::NoFilter, 1.0f, pFocus->overrideWindow ); - - gamescope::Rc pRGBTexture = s_pPipewireBuffer->texture->isYcbcr() -- ? vulkan_acquire_screenshot_texture( g_nOutputWidth, g_nOutputHeight, false, DRM_FORMAT_XRGB2101010 ) -+ ? vulkan_acquire_screenshot_texture( uWidth, uHeight, false, DRM_FORMAT_XRGB2101010 ) - : gamescope::Rc{ s_pPipewireBuffer->texture }; - - gamescope::Rc pYUVTexture = s_pPipewireBuffer->texture->isYcbcr() ? s_pPipewireBuffer->texture : nullptr; - -- uint32_t uCompositeDebugBackup = g_uCompositeDebug; -- g_uCompositeDebug = 0; - - std::optional oPipewireSequence = vulkan_screenshot( &frameInfo, pRGBTexture, pYUVTexture ); - // If we ever want the fat compositing path, use this. -@@ -2220,6 +2229,9 @@ static void paint_pipewire() - - g_uCompositeDebug = uCompositeDebugBackup; - -+ currentOutputWidth = uBackupWidth; -+ currentOutputHeight = uBackupHeight; -+ - if ( oPipewireSequence ) - { - vulkan_wait( *oPipewireSequence, true ); --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Autumn Ashton -Date: Wed, 2 Apr 2025 01:55:47 +0100 -Subject: steamcompmgr: VRR frame limiting - ---- - src/steamcompmgr.cpp | 116 +++++++++++++++++++++++++++--------- - src/steamcompmgr_shared.hpp | 2 + - 2 files changed, 91 insertions(+), 27 deletions(-) - -diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp -index 7371a3905b56..d91cc45b5be5 100644 ---- a/src/steamcompmgr.cpp -+++ b/src/steamcompmgr.cpp -@@ -898,10 +898,6 @@ bool g_bChangeDynamicRefreshBasedOnGameOpenRatherThanActive = false; - - bool steamcompmgr_window_should_limit_fps( steamcompmgr_win_t *w ) - { -- // VRR + FPS Limit needs another approach. -- if ( GetBackend()->IsVRRActive() ) -- return false; -- - return w && !window_is_steam( w ) && !w->isOverlay && !w->isExternalOverlay; - } - -@@ -5076,6 +5072,8 @@ steamcompmgr_flush_frame_done( steamcompmgr_win_t *w ) - w->unlockedForFrameCallback = false; - w->receivedDoneCommit = false; - -+ w->last_commit_first_latch_time = timespec_to_nanos(now); -+ - // Acknowledge commit once. - wlserver_lock(); - -@@ -5093,35 +5091,58 @@ steamcompmgr_flush_frame_done( steamcompmgr_win_t *w ) - } - } - --static bool steamcompmgr_should_vblank_window( bool bShouldLimitFPS, uint64_t vblank_idx ) --{ -- if ( GetBackend()->IsVRRActive() ) -- return true; -+static std::optional s_oLowestFPSLimitScheduleVRR; - -+static bool steamcompmgr_should_vblank_window( bool bShouldLimitFPS, uint64_t vblank_idx, steamcompmgr_win_t *w = nullptr, uint64_t now = 0 ) -+{ - bool bSendCallback = true; - - int nRefreshHz = gamescope::ConvertmHzToHz( g_nNestedRefresh ? g_nNestedRefresh : g_nOutputRefresh ); - int nTargetFPS = g_nSteamCompMgrTargetFPS; -- if ( g_nSteamCompMgrTargetFPS && bShouldLimitFPS && nRefreshHz > nTargetFPS ) -+ -+ if ( GetBackend()->IsVRRActive() ) - { -- int nVblankDivisor = nRefreshHz / nTargetFPS; -+ bool bCloseEnough = std::abs( g_nSteamCompMgrTargetFPS - nRefreshHz ) < 2; -+ -+ if ( g_nSteamCompMgrTargetFPS && bShouldLimitFPS && w && !bCloseEnough ) -+ { -+ uint64_t schedule = w->last_commit_first_latch_time + g_SteamCompMgrLimitedAppRefreshCycle; -+ -+ static constexpr uint64_t k_ulVRRScheduleFudge = 200'000; // 0.2ms -+ if ( now + k_ulVRRScheduleFudge < schedule ) -+ { -+ bSendCallback = false; - -- if ( vblank_idx % nVblankDivisor != 0 ) -- bSendCallback = false; -+ if ( !s_oLowestFPSLimitScheduleVRR ) -+ s_oLowestFPSLimitScheduleVRR = schedule; -+ else -+ s_oLowestFPSLimitScheduleVRR = std::min( *s_oLowestFPSLimitScheduleVRR, schedule ); -+ } -+ } -+ } -+ else -+ { -+ if ( g_nSteamCompMgrTargetFPS && bShouldLimitFPS && nRefreshHz > nTargetFPS ) -+ { -+ int nVblankDivisor = nRefreshHz / nTargetFPS; -+ -+ if ( vblank_idx % nVblankDivisor != 0 ) -+ bSendCallback = false; -+ } - } - - return bSendCallback; - } - --static bool steamcompmgr_should_vblank_window( steamcompmgr_win_t *w, uint64_t vblank_idx ) -+static bool steamcompmgr_should_vblank_window( steamcompmgr_win_t *w, uint64_t vblank_idx, uint64_t now ) - { -- return steamcompmgr_should_vblank_window( steamcompmgr_window_should_limit_fps( w ), vblank_idx ); -+ return steamcompmgr_should_vblank_window( steamcompmgr_window_should_limit_fps( w ), vblank_idx, w, now ); - } - - static void --steamcompmgr_latch_frame_done( steamcompmgr_win_t *w, uint64_t vblank_idx ) -+steamcompmgr_latch_frame_done( steamcompmgr_win_t *w, uint64_t vblank_idx, uint64_t now ) - { -- if ( steamcompmgr_should_vblank_window( w, vblank_idx ) ) -+ if ( steamcompmgr_should_vblank_window( w, vblank_idx, now ) ) - { - w->unlockedForFrameCallback = true; - } -@@ -6145,12 +6166,27 @@ void handle_done_commits_xwayland( xwayland_ctx_t *ctx, bool vblank, uint64_t vb - - uint64_t now = get_time_in_nanos(); - -- vblank = vblank && steamcompmgr_should_vblank_window( true, vblank_idx ); -- - // very fast loop yes - for ( auto& entry : ctx->doneCommits.listCommitsDone ) - { -- if (entry.fifo && (!vblank || fifo_win_seqs.count(entry.winSeq) > 0)) -+ bool entry_vblank = vblank; -+ -+ if ( GetBackend()->IsVRRActive() ) -+ { -+ for ( steamcompmgr_win_t *w = ctx->list; w; w = w->xwayland().next ) -+ { -+ if (w->seq != entry.winSeq) -+ continue; -+ -+ entry_vblank = entry_vblank && steamcompmgr_should_vblank_window( true, vblank_idx, w, now ); -+ } -+ } -+ else -+ { -+ entry_vblank = entry_vblank && steamcompmgr_should_vblank_window( true, vblank_idx ); -+ } -+ -+ if (entry.fifo && (!entry_vblank || fifo_win_seqs.count(entry.winSeq) > 0)) - { - commits_before_their_time.push_back( entry ); - continue; -@@ -7414,6 +7450,11 @@ void LaunchNestedChildren( char **ppPrimaryChildArgv ) - } - } - -+static gamescope::CTimerFunction g_FPSLimitVRRTimer{ [] -+{ -+ // do nothing. -+}}; -+ - void - steamcompmgr_main(int argc, char **argv) - { -@@ -7547,6 +7588,7 @@ steamcompmgr_main(int argc, char **argv) - } - - g_SteamCompMgrWaiter.AddWaitable( &GetVBlankTimer() ); -+ g_SteamCompMgrWaiter.AddWaitable( &g_FPSLimitVRRTimer ); - GetVBlankTimer().ArmNextVBlank( true ); - - { -@@ -7722,18 +7764,20 @@ steamcompmgr_main(int argc, char **argv) - if ( vblank ) - { - { -+ uint64_t now = get_time_in_nanos(); -+ - gamescope_xwayland_server_t *server = NULL; - for (size_t i = 0; (server = wlserver_get_xwayland_server(i)); i++) - { - for (steamcompmgr_win_t *w = server->ctx->list; w; w = w->xwayland().next) - { -- steamcompmgr_latch_frame_done( w, vblank_idx ); -+ steamcompmgr_latch_frame_done( w, vblank_idx, now ); - } - } - - for ( const auto& xdg_win : g_steamcompmgr_xdg_wins ) - { -- steamcompmgr_latch_frame_done( xdg_win.get(), vblank_idx ); -+ steamcompmgr_latch_frame_done( xdg_win.get(), vblank_idx, now ); - } - } - } -@@ -7757,18 +7801,36 @@ steamcompmgr_main(int argc, char **argv) - - steamcompmgr_check_xdg(vblank, vblank_idx); - -+ if ( s_oLowestFPSLimitScheduleVRR ) -+ { -+ g_FPSLimitVRRTimer.ArmTimer( *s_oLowestFPSLimitScheduleVRR ); -+ s_oLowestFPSLimitScheduleVRR = std::nullopt; -+ } -+ - if ( vblank ) - { - vblank_idx++; - - int nRealRefreshmHz = g_nNestedRefresh ? g_nNestedRefresh : g_nOutputRefresh; -- int nRealRefreshHz = gamescope::ConvertmHzToHz( nRealRefreshmHz ); -- int nTargetFPS = g_nSteamCompMgrTargetFPS ? g_nSteamCompMgrTargetFPS : nRealRefreshHz; -- nTargetFPS = std::min( nTargetFPS, nRealRefreshHz ); -- int nVblankDivisor = nRealRefreshHz / nTargetFPS; -- - g_SteamCompMgrAppRefreshCycle = gamescope::mHzToRefreshCycle( nRealRefreshmHz ); -- g_SteamCompMgrLimitedAppRefreshCycle = g_SteamCompMgrAppRefreshCycle * nVblankDivisor; -+ g_SteamCompMgrLimitedAppRefreshCycle = g_SteamCompMgrAppRefreshCycle; -+ if ( g_nSteamCompMgrTargetFPS ) -+ { -+ int nRealRefreshHz = gamescope::ConvertmHzToHz( nRealRefreshmHz ); -+ int nTargetFPS = g_nSteamCompMgrTargetFPS; -+ nTargetFPS = std::min( nTargetFPS, nRealRefreshHz ); -+ -+ if ( GetBackend()->IsVRRActive() ) -+ { -+ g_SteamCompMgrLimitedAppRefreshCycle = gamescope::mHzToRefreshCycle( gamescope::ConvertHztomHz( nTargetFPS ) ); -+ } -+ else -+ { -+ int nVblankDivisor = nRealRefreshHz / nTargetFPS; -+ -+ g_SteamCompMgrLimitedAppRefreshCycle = g_SteamCompMgrAppRefreshCycle * nVblankDivisor; -+ } -+ } - } - - // Handle presentation-time stuff -diff --git a/src/steamcompmgr_shared.hpp b/src/steamcompmgr_shared.hpp -index 095694e4937a..f300eb94d954 100644 ---- a/src/steamcompmgr_shared.hpp -+++ b/src/steamcompmgr_shared.hpp -@@ -127,6 +127,8 @@ struct steamcompmgr_win_t { - bool maybe_a_dropdown = false; - bool outdatedInteractiveFocus = false; - -+ uint64_t last_commit_first_latch_time = 0; -+ - bool hasHwndStyle = false; - uint32_t hwndStyle = 0; - bool hasHwndStyleEx = false; --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Colin Kinloch -Date: Sat, 21 Dec 2024 17:08:12 +0000 -Subject: scripts: Derive script path from meson prefix - ---- - meson.build | 1 + - src/Script/Script.cpp | 2 +- - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/meson.build b/meson.build -index c4924c7afb44..00a1cb42bde4 100644 ---- a/meson.build -+++ b/meson.build -@@ -68,6 +68,7 @@ endif - add_project_arguments( - '-DHAVE_PIPEWIRE=@0@'.format(pipewire_dep.found().to_int()), - '-DHAVE_OPENVR=@0@'.format(openvr_dep.found().to_int()), -+ '-DSCRIPT_DIR="@0@"'.format(prefix / data_dir / 'gamescope/scripts'), - language: 'cpp', - ) - -diff --git a/src/Script/Script.cpp b/src/Script/Script.cpp -index a104ee993bc9..142371b33e0f 100644 ---- a/src/Script/Script.cpp -+++ b/src/Script/Script.cpp -@@ -130,7 +130,7 @@ namespace gamescope - } - else - { -- RunFolder( "/usr/share/gamescope/scripts", true ); -+ RunFolder( SCRIPT_DIR, true ); - RunFolder( "/etc/gamescope/scripts", true ); - } - --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Matthew Schwartz -Date: Wed, 30 Oct 2024 14:56:18 -0700 -Subject: script: Lenovo Legion Go LCD display configuration - -Add support for the Lenovo Legion Go handheld, which features a rotated -1600x2560 panel that reports 60Hz and 144Hz modes in the EDID. VRR and -HDR are not supported, and only one panel model is known to be in use. - -Modes other than 60Hz and 144Hz have a small chance of causing a locked -touchscreen until another modeset is performed or have artifacts during -modesetting, so extra modes are not included. The dynamic_modegen section -is filled out in case users decide to add their own refresh rates in a -local table. - -This configuration has been tested with: -* SteamOS Main 20241025.1000 with kernel 6.8.12-valve3 -* Arch Linux with kernel 6.12-rc5 - -Signed-off-by: Matthew Schwartz ---- - .../displays/lenovo.legiongo.lcd.lua | 45 +++++++++++++++++++ - 1 file changed, 45 insertions(+) - create mode 100644 scripts/00-gamescope/displays/lenovo.legiongo.lcd.lua - -diff --git a/scripts/00-gamescope/displays/lenovo.legiongo.lcd.lua b/scripts/00-gamescope/displays/lenovo.legiongo.lcd.lua -new file mode 100644 -index 000000000000..2360cfe35cb2 ---- /dev/null -+++ b/scripts/00-gamescope/displays/lenovo.legiongo.lcd.lua -@@ -0,0 +1,45 @@ -+gamescope.config.known_displays.lenovo_legiongo_lcd = { -+ pretty_name = "Lenovo Legion Go LCD", -+ dynamic_refresh_rates = { -+ 60, 144 -+ }, -+ hdr = { -+ -- Setup some fallbacks for undocking with HDR, meant -+ -- for the internal panel. It does not support HDR. -+ supported = false, -+ force_enabled = false, -+ eotf = gamescope.eotf.gamma22, -+ max_content_light_level = 500, -+ max_frame_average_luminance = 500, -+ min_content_light_level = 0.5 -+ }, -+ -- Use the EDID colorimetry for now, but someone should check -+ -- if the EDID colorimetry truly matches what the display is capable of. -+ dynamic_modegen = function(base_mode, refresh) -+ debug("Generating mode "..refresh.."Hz for Lenovo Legion Go LCD") -+ local mode = base_mode -+ -+ -- These are only tuned for 1600x2560 -+ gamescope.modegen.set_resolution(mode, 1600, 2560) -+ -+ -- Horizontal timings: Hfront, Hsync, Hback -+ gamescope.modegen.set_h_timings(mode, 60, 30, 130) -+ -- Vertical timings: Vfront, Vsync, Vback -+ gamescope.modegen.set_v_timings(mode, 30, 4, 96) -+ -+ mode.clock = gamescope.modegen.calc_max_clock(mode, refresh) -+ mode.vrefresh = gamescope.modegen.calc_vrefresh(mode) -+ -+ return mode -+ end, -+ matches = function(display) -+ -- There is only a single panel in use on the Lenovo Legion Go. -+ if display.vendor == "LEN" and display.model == "Go Display" and display.product == 0x0001 then -+ debug("[lenovo_legiongo_lcd] Matched vendor: "..display.vendor.." model: "..display.model.." product: "..display.product) -+ return 5000 -+ end -+ return -1 -+ end -+} -+debug("Registered Lenovo Legion Go LCD as a known display") -+--debug(inspect(gamescope.config.known_displays.lenovo_legiongo_lcd)) --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Aarron Lee -Date: Wed, 9 Oct 2024 23:19:15 -0400 -Subject: script: GPD Win 4 display configuration - -This introduces a display configuration for the GPD Win 4 handheld. - -Most of this display configuration was derived from the edid as-is, -excluding the dynamic_refresh_rates. - -All refresh rates were all manually tested with the Steam slider, -and the device functioned as expected through multiple games. - -This was tested on two separate GPD Win 4 devices. - -Tested on: - -Model DMI - - G1618-04 -Distro - - Bazzite 40 -Kernels - - 6.9.12-210.fsync.fc40.x86_64 - - 6.11.2-201.fsync.fc40.x86_64 - -All refresh rates were tested with the following games: - -- Ghost of Tsushima -- Nier Automata -- Metaphor: ReFantazio (Demo) -- Boomerang Fu - -These games were tested with 35hz, 40hz, 50hz, -and had no observed issues: - -- Crosscode -- Cult of Lamb -- Dave the Diver -- MDA Rain Code Plus -- Shantae and the Seven Sirens ---- - .../00-gamescope/displays/gpd.win4.lcd.lua | 60 +++++++++++++++++++ - 1 file changed, 60 insertions(+) - create mode 100644 scripts/00-gamescope/displays/gpd.win4.lcd.lua - -diff --git a/scripts/00-gamescope/displays/gpd.win4.lcd.lua b/scripts/00-gamescope/displays/gpd.win4.lcd.lua -new file mode 100644 -index 000000000000..5f5eec898c3b ---- /dev/null -+++ b/scripts/00-gamescope/displays/gpd.win4.lcd.lua -@@ -0,0 +1,60 @@ -+-- colorimetry from edid -+local gpd_win4_lcd_colorimetry = { -+ r = { x = 0.6250, y = 0.3398 }, -+ g = { x = 0.2802, y = 0.5947 }, -+ b = { x = 0.1552, y = 0.0703 }, -+ w = { x = 0.2832, y = 0.2978 } -+} -+ -+gamescope.config.known_displays.gpd_win4_lcd = { -+ pretty_name = "GPD Win 4", -+ dynamic_refresh_rates = { -+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, -+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60 -+ }, -+ hdr = { -+ supported = false, -+ force_enabled = false, -+ eotf = gamescope.eotf.gamma22, -+ max_content_light_level = 400, -+ max_frame_average_luminance = 400, -+ min_content_light_level = 0.5 -+ }, -+ colorimetry = gpd_win4_lcd_colorimetry, -+ dynamic_modegen = function(base_mode, refresh) -+ debug("Generating mode "..refresh.."Hz for GPD Win 4") -+ local mode = base_mode -+ -+ gamescope.modegen.set_resolution(mode, 1920, 1080) -+ -+ -- Horizontal timings: Hfront, Hsync, Hback -+ gamescope.modegen.set_h_timings(mode, 72, 8, 16) -+ -- Vertical timings: Vfront, Vsync, Vback -+ gamescope.modegen.set_v_timings(mode, 14, 3, 13) -+ -+ mode.clock = gamescope.modegen.calc_max_clock(mode, refresh) -+ mode.vrefresh = gamescope.modegen.calc_vrefresh(mode) -+ -+ return mode -+ end, -+ matches = function(display) -+ -- There are multiple revisions of the GPD Win 4 -+ -- They all should have the same panel -+ -- lcd_types is just in case there are different panels -+ local lcd_types = { -+ { vendor = "GPD", model = "G1618-04" }, -+ } -+ -+ for index, value in ipairs(lcd_types) do -+ if value.vendor == display.vendor and value.model == display.model then -+ debug("[gpd_win4_lcd] Matched vendor: "..value.vendor.." model: "..value.model) -+ return 5000 -+ end -+ end -+ -+ return -1 -+ end -+} -+debug("Registered GPD Win 4 as a known display") -+--debug(inspect(gamescope.config.known_displays.gpd_win4_lcd)) --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Autumn Ashton -Date: Wed, 2 Apr 2025 03:15:44 +0100 -Subject: DRMBackend: Read the EDID's modes for dynamic refresh rate modes by - default - -Should supercede https://github.com/ValveSoftware/gamescope/pull/1627 and allow this feature on some handhelds that just expose modes in the EDID. ---- - src/Backends/DRMBackend.cpp | 32 ++++++++++++++++++++++++++++++-- - 1 file changed, 30 insertions(+), 2 deletions(-) - -diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp -index 0b121e84167a..37185856b7ec 100644 ---- a/src/Backends/DRMBackend.cpp -+++ b/src/Backends/DRMBackend.cpp -@@ -2142,6 +2142,8 @@ namespace gamescope - bool bHasKnownColorimetry = false; - bool bHasKnownHDRInfo = false; - -+ m_Mutable.ValidDynamicRefreshRates.clear(); -+ m_Mutable.fnDynamicModeGenerator = nullptr; - { - CScriptScopedLock script; - -@@ -2155,8 +2157,6 @@ namespace gamescope - (int)oKnownDisplay->first.size(), oKnownDisplay->first.data(), - (int)psvPrettyName.size(), psvPrettyName.data() ); - -- m_Mutable.fnDynamicModeGenerator = nullptr; -- m_Mutable.ValidDynamicRefreshRates.clear(); - - sol::optional otDynamicRefreshRates = tTable["dynamic_refresh_rates"]; - sol::optional ofnDynamicModegen = tTable["dynamic_modegen"]; -@@ -2243,6 +2243,34 @@ namespace gamescope - bHasKnownHDRInfo = true; - } - } -+ else -+ { -+ // Unknown display, see if there are any other refresh rates in the EDID we can get. -+ if ( GetScreenType() == GAMESCOPE_SCREEN_TYPE_INTERNAL ) -+ { -+ const drmModeModeInfo *pPreferredMode = find_mode( m_pConnector.get(), 0, 0, 0 ); -+ -+ if ( pPreferredMode ) -+ { -+ // See if the EDID has any modes for us. -+ for (int i = 0; i < m_pConnector->count_modes; i++) -+ { -+ const drmModeModeInfo *pMode = &m_pConnector->modes[i]; -+ -+ if ( pMode->hdisplay != pPreferredMode->hdisplay || pMode->vdisplay != pPreferredMode->vdisplay ) -+ continue; -+ -+ -+ if ( !Algorithm::Contains( m_Mutable.ValidDynamicRefreshRates, pMode->vrefresh ) ) -+ { -+ m_Mutable.ValidDynamicRefreshRates.push_back( pMode->vrefresh ); -+ } -+ } -+ -+ std::sort( m_Mutable.ValidDynamicRefreshRates.begin(), m_Mutable.ValidDynamicRefreshRates.end() ); -+ } -+ } -+ } - } - - if ( !bHasKnownColorimetry ) --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: sharkautarch <128002472+sharkautarch@users.noreply.github.com> -Date: Tue, 3 Dec 2024 13:31:37 -0500 -Subject: wlserver: wlserver_run(): ensure waylock is released when - wl_event_loop_dispatch returns ret<0 - ---- - src/wlserver.cpp | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/wlserver.cpp b/src/wlserver.cpp -index 78a86ee0e2e2..4ce9511352d0 100644 ---- a/src/wlserver.cpp -+++ b/src/wlserver.cpp -@@ -1956,6 +1956,7 @@ void wlserver_run(void) - wl_display_flush_clients(wlserver.display); - int ret = wl_event_loop_dispatch(wlserver.event_loop, 0); - if (ret < 0) { -+ wlserver_unlock(); - break; - } - --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Autumn Ashton -Date: Wed, 2 Apr 2025 04:29:16 +0100 -Subject: DRMBackend: Expose data string from EDID to matches function - ---- - src/Backends/DRMBackend.cpp | 12 ++++++++++-- - src/Script/Script.cpp | 3 ++- - src/Script/Script.h | 2 +- - 3 files changed, 13 insertions(+), 4 deletions(-) - -diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp -index 37185856b7ec..06ebbe7255d4 100644 ---- a/src/Backends/DRMBackend.cpp -+++ b/src/Backends/DRMBackend.cpp -@@ -287,6 +287,7 @@ namespace gamescope - const char *GetName() const override { return m_Mutable.szName; } - const char *GetMake() const override { return m_Mutable.pszMake; } - const char *GetModel() const override { return m_Mutable.szModel; } -+ const char *GetDataString() const { return m_Mutable.szDataString; } - uint32_t GetPossibleCRTCMask() const { return m_Mutable.uPossibleCRTCMask; } - std::span GetValidDynamicRefreshRates() const override { return m_Mutable.ValidDynamicRefreshRates; } - const displaycolorimetry_t& GetDisplayColorimetry() const { return m_Mutable.DisplayColorimetry; } -@@ -392,6 +393,7 @@ namespace gamescope - char szName[32]{}; - char szMakePNP[4]{}; - char szModel[16]{}; -+ char szDataString[16]{}; - const char *pszMake = ""; // Not owned, no free. This is a pointer to pnp db or szMakePNP. - std::vector ValidDynamicRefreshRates{}; - DRMModeGenerator fnDynamicModeGenerator; -@@ -2128,13 +2130,19 @@ namespace gamescope - for ( size_t i = 0; pDescriptors[i] != nullptr; i++ ) - { - const di_edid_display_descriptor *pDesc = pDescriptors[i]; -- if ( di_edid_display_descriptor_get_tag( pDesc ) == DI_EDID_DISPLAY_DESCRIPTOR_PRODUCT_NAME ) -+ const di_edid_display_descriptor_tag eTag = di_edid_display_descriptor_get_tag( pDesc ); -+ if ( eTag == DI_EDID_DISPLAY_DESCRIPTOR_PRODUCT_NAME ) - { - // Max length of di_edid_display_descriptor_get_string is 14 - // m_szModel is 16 bytes. - const char *pszModel = di_edid_display_descriptor_get_string( pDesc ); - strncpy( m_Mutable.szModel, pszModel, sizeof( m_Mutable.szModel ) ); - } -+ else if ( eTag == DI_EDID_DISPLAY_DESCRIPTOR_DATA_STRING ) -+ { -+ const char *pszDataString = di_edid_display_descriptor_get_string( pDesc ); -+ strncpy( m_Mutable.szDataString, pszDataString, sizeof( m_Mutable.szDataString ) ); -+ } - } - - drm_log.infof("Connector %s -> %s - %s", m_Mutable.szName, m_Mutable.szMakePNP, m_Mutable.szModel ); -@@ -2147,7 +2155,7 @@ namespace gamescope - { - CScriptScopedLock script; - -- auto oKnownDisplay = script.Manager().Gamescope().Config.LookupDisplay( script, m_Mutable.szMakePNP, pProduct->product, m_Mutable.szModel ); -+ auto oKnownDisplay = script.Manager().Gamescope().Config.LookupDisplay( script, m_Mutable.szMakePNP, pProduct->product, m_Mutable.szModel, m_Mutable.szDataString ); - if ( oKnownDisplay ) - { - sol::table tTable = oKnownDisplay->second; -diff --git a/src/Script/Script.cpp b/src/Script/Script.cpp -index 142371b33e0f..ceb1f80e3a77 100644 ---- a/src/Script/Script.cpp -+++ b/src/Script/Script.cpp -@@ -247,7 +247,7 @@ namespace gamescope - // GamescopeScript_t - // - -- std::optional> GamescopeScript_t::Config_t::LookupDisplay( CScriptScopedLock &script, std::string_view psvVendor, uint16_t uProduct, std::string_view psvModel ) -+ std::optional> GamescopeScript_t::Config_t::LookupDisplay( CScriptScopedLock &script, std::string_view psvVendor, uint16_t uProduct, std::string_view psvModel, std::string_view psvDataString ) - { - int nMaxPrority = -1; - std::optional> oOutDisplay; -@@ -256,6 +256,7 @@ namespace gamescope - tDisplay["vendor"] = psvVendor; - tDisplay["product"] = uProduct; - tDisplay["model"] = psvModel; -+ tDisplay["data_string"] = psvDataString; - - for ( auto iter : KnownDisplays ) - { -diff --git a/src/Script/Script.h b/src/Script/Script.h -index 6eebb66a9f36..7c856a75e512 100644 ---- a/src/Script/Script.h -+++ b/src/Script/Script.h -@@ -30,7 +30,7 @@ namespace gamescope - - sol::table KnownDisplays; - -- std::optional> LookupDisplay( CScriptScopedLock &script, std::string_view psvVendor, uint16_t uProduct, std::string_view psvModel ); -+ std::optional> LookupDisplay( CScriptScopedLock &script, std::string_view psvVendor, uint16_t uProduct, std::string_view psvModel, std::string_view psvDataString ); - } Config; - }; - --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: "Pierre-Loup A. Griffais" -Date: Tue, 15 Apr 2025 15:56:02 -0700 -Subject: steamcompmgr: avoid a crash with pipewire+magnification - -It won't render the correct offset for now, but that's better than crashing. - -Probably magnification should be ignore when painting for pipewire? ---- - src/steamcompmgr.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp -index d91cc45b5be5..d0a069e69c60 100644 ---- a/src/steamcompmgr.cpp -+++ b/src/steamcompmgr.cpp -@@ -1972,8 +1972,8 @@ paint_window_commit( const gamescope::Rc &lastCommit, steamcompmgr_win - - if ( zoomScaleRatio != 1.0 ) - { -- drawXOffset += (((int)sourceWidth / 2) - cursor->x()) * currentScaleRatio_x; -- drawYOffset += (((int)sourceHeight / 2) - cursor->y()) * currentScaleRatio_y; -+ drawXOffset += (((int)sourceWidth / 2) - (cursor ? cursor->x() : 0)) * currentScaleRatio_x; -+ drawYOffset += (((int)sourceHeight / 2) - (cursor ? cursor->y() : 0)) * currentScaleRatio_y; - } - } - --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Matthew Schwartz -Date: Sun, 6 Apr 2025 20:35:54 -0700 -Subject: build: add workaround to build with CMake 4.0 - -OpenVR's CMakelist does not support CMake 4.0 yet, causing build failures -in gamescope. Until a new OpenVR SDK is released, let's make sure gamescope -stays buildable in the meantime with a workaround which can be removed in -the future. - -Closes: #1785 ---- - meson.build | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/meson.build b/meson.build -index 00a1cb42bde4..cc07a59ca99a 100644 ---- a/meson.build -+++ b/meson.build -@@ -55,7 +55,10 @@ if get_option('enable_openvr_support') - if not openvr_dep.found() - cmake = import('cmake') - openvr_var = cmake.subproject_options() -- openvr_var.add_cmake_defines({'USE_LIBCXX': false}) -+ openvr_var.add_cmake_defines({'USE_LIBCXX': false, -+ #HACK: remove me when openvr supports CMake 4.0 -+ 'CMAKE_POLICY_VERSION_MINIMUM': '3.5'}) -+ #ENDHACK - openvr_var.set_override_option('warning_level', '0') - openvr_proj = cmake.subproject('openvr', options : openvr_var) - openvr_dep = openvr_proj.dependency('openvr_api') --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Autumn Ashton -Date: Fri, 25 Apr 2025 16:17:00 +0100 -Subject: WaylandBackend: Fix initial scale for Wayland surfaces - ---- - src/Backends/WaylandBackend.cpp | 26 ++++++++++++++++++++++---- - 1 file changed, 22 insertions(+), 4 deletions(-) - -diff --git a/src/Backends/WaylandBackend.cpp b/src/Backends/WaylandBackend.cpp -index 08af8bca1b99..da43d03987a8 100644 ---- a/src/Backends/WaylandBackend.cpp -+++ b/src/Backends/WaylandBackend.cpp -@@ -272,6 +272,7 @@ namespace gamescope - std::vector m_pOutputs; - bool m_bNeedsDecorCommit = false; - uint32_t m_uFractionalScale = 120; -+ bool m_bHasRecievedScale = false; - - std::mutex m_PlaneStateLock; - std::optional m_oCurrentPlaneState; -@@ -1358,14 +1359,31 @@ namespace gamescope - - void CWaylandPlane::Wayland_FractionalScale_PreferredScale( wp_fractional_scale_v1 *pFractionalScale, uint32_t uScale ) - { -- if ( m_uFractionalScale != uScale ) -+ bool bDirty = false; -+ -+ static uint32_t s_uGlobalFractionalScale = 120; -+ if ( s_uGlobalFractionalScale != uScale ) - { -- g_nOutputWidth = ( g_nOutputWidth * uScale ) / m_uFractionalScale; -- g_nOutputHeight = ( g_nOutputHeight * uScale ) / m_uFractionalScale; -+ if ( m_bHasRecievedScale ) -+ { -+ g_nOutputWidth = ( g_nOutputWidth * uScale ) / m_uFractionalScale; -+ g_nOutputHeight = ( g_nOutputHeight * uScale ) / m_uFractionalScale; -+ } -+ -+ s_uGlobalFractionalScale = uScale; -+ bDirty = true; -+ } - -+ if ( m_uFractionalScale != uScale ) -+ { - m_uFractionalScale = uScale; -- force_repaint(); -+ bDirty = true; - } -+ -+ m_bHasRecievedScale = true; -+ -+ if ( bDirty ) -+ force_repaint(); - } - - //////////////// --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= -Date: Wed, 9 Apr 2025 14:01:13 -0700 -Subject: rendervulkan: Append VK_STRUCTURE_TYPE_WSI_MEMORY_ALLOCATE_INFO_MESA - when creating scanout VkImages -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -It already appends VK_STRUCTURE_TYPE_WSI_IMAGE_CREATE_INFO_MESA when -creating scanout images to make other Vulkan drivers works, so lets -also append VK_STRUCTURE_TYPE_WSI_MEMORY_ALLOCATE_INFO_MESA to make -ANV+Xe KMD work. - -Signed-off-by: José Roberto de Souza ---- - src/rendervulkan.cpp | 15 +++++++++++++++ - 1 file changed, 15 insertions(+) - -diff --git a/src/rendervulkan.cpp b/src/rendervulkan.cpp -index 7efcc0dbd8a9..b8412b8fdf2f 100644 ---- a/src/rendervulkan.cpp -+++ b/src/rendervulkan.cpp -@@ -163,6 +163,7 @@ Target *pNextFind(const Base *base, VkStructureType sType) - } - - #define VK_STRUCTURE_TYPE_WSI_IMAGE_CREATE_INFO_MESA (VkStructureType)1000001002 -+#define VK_STRUCTURE_TYPE_WSI_MEMORY_ALLOCATE_INFO_MESA (VkStructureType)1000001003 - - struct wsi_image_create_info { - VkStructureType sType; -@@ -173,6 +174,11 @@ struct wsi_image_create_info { - const uint64_t *modifiers; - }; - -+struct wsi_memory_allocate_info { -+ VkStructureType sType; -+ const void *pNext; -+ bool implicit_sync; -+}; - - // DRM doesn't have 32bit floating point formats, so add our own - #define DRM_FORMAT_ABGR32323232F fourcc_code('A', 'B', '8', 'F') -@@ -2215,6 +2221,15 @@ bool CVulkanTexture::BInit( uint32_t width, uint32_t height, uint32_t depth, uin - VkImportMemoryFdInfoKHR importMemoryInfo = {}; - VkExportMemoryAllocateInfo memory_export_info = {}; - VkMemoryDedicatedAllocateInfo memory_dedicated_info = {}; -+ struct wsi_memory_allocate_info memory_wsi_info = {}; -+ -+ if ( flags.bFlippable == true ) -+ { -+ memory_wsi_info = { -+ .sType = VK_STRUCTURE_TYPE_WSI_MEMORY_ALLOCATE_INFO_MESA, -+ .pNext = std::exchange(allocInfo.pNext, &memory_wsi_info), -+ }; -+ } - - if ( flags.bExportable == true || pDMA != nullptr ) - { --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: MithicSpirit -Date: Thu, 30 Jan 2025 15:54:26 -0500 -Subject: WaylandBackend: prevent crash after closing window - -Whenever a window was closed, gamescope would segfault due to calling -IsSurfacePlane with null (from Wayland_Pointer_Leave, and maybe a few -other places). This is addressed by having IsSurfacePlane short-circuit -if it's passed null. - -HACK: I feel like IsSurfacePlane shouldn't ever be called with a null -pointer, but this is the easiest way to solve this for now, and the code -needs refactoring anyway. ---- - src/Backends/WaylandBackend.cpp | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/src/Backends/WaylandBackend.cpp b/src/Backends/WaylandBackend.cpp -index da43d03987a8..22f8ee5c8fac 100644 ---- a/src/Backends/WaylandBackend.cpp -+++ b/src/Backends/WaylandBackend.cpp -@@ -75,7 +75,9 @@ static inline uint32_t WaylandScaleToLogical( uint32_t pValue, uint32_t pFactor - } - - static bool IsSurfacePlane( wl_surface *pSurface ) { -- return wl_proxy_get_tag( (wl_proxy *)pSurface ) == &GAMESCOPE_plane_tag; -+ // HACK: this probably should never be called with a null pointer, but it -+ // was happening after a window was closed. -+ return pSurface && (wl_proxy_get_tag( (wl_proxy *)pSurface ) == &GAMESCOPE_plane_tag); - } - - #define WAYLAND_NULL() [] ( void *pData, Args... args ) { } --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Matthew Schwartz -Date: Tue, 1 Apr 2025 23:03:56 -0700 -Subject: script: fixup Ally config to support BOE panels - -Also made some style fixups. Verified working on both BOE -and TMX panel models. ---- - .../displays/asus.rogally.lcd.lua | 35 ++++++++++++------- - 1 file changed, 23 insertions(+), 12 deletions(-) - -diff --git a/scripts/00-gamescope/displays/asus.rogally.lcd.lua b/scripts/00-gamescope/displays/asus.rogally.lcd.lua -index 11ba7cc30f9b..40b5188b5c73 100644 ---- a/scripts/00-gamescope/displays/asus.rogally.lcd.lua -+++ b/scripts/00-gamescope/displays/asus.rogally.lcd.lua -@@ -10,7 +10,7 @@ local rogally_lcd_refresh_rates = { - } - - gamescope.config.known_displays.rogally_lcd = { -- pretty_name = "ASUS ROG Ally/Ally X LCD", -+ pretty_name = "ASUS ROG Ally / ROG Ally X LCD", - hdr = { - -- Setup some fallbacks for undocking with HDR, meant - -- for the internal panel. It does not support HDR. -@@ -21,16 +21,14 @@ gamescope.config.known_displays.rogally_lcd = { - max_frame_average_luminance = 500, - min_content_light_level = 0.5 - }, -- -- Use the EDID colorimetry for now, but someone should check -- -- if the EDID colorimetry truly matches what the display is capable of. - dynamic_refresh_rates = rogally_lcd_refresh_rates, -- -- Follow the Steam Deck OLED style for modegen by variang the VFP (Vertical Front Porch) -+ -- Follow the Steam Deck OLED style for modegen by varying the VFP (Vertical Front Porch) - -- - -- Given that this display is VRR and likely has an FB/Partial FB in the DDIC: - -- it should be able to handle this method, and it is more optimal for latency - -- than elongating the clock. - dynamic_modegen = function(base_mode, refresh) -- debug("Generating mode "..refresh.."Hz for ROG Ally with fixed pixel clock") -+ debug("Generating mode "..refresh.."Hz for ASUS ROG Ally / ROG Ally X LCD with fixed pixel clock") - local vfps = { - 1771, 1720, 1655, 1600, 1549, - 1499, 1455, 1405, 1361, 1320, -@@ -50,7 +48,7 @@ gamescope.config.known_displays.rogally_lcd = { - } - local vfp = vfps[zero_index(refresh - 48)] - if vfp == nil then -- warn("Couldn't do refresh "..refresh.." on ROG Ally") -+ warn("Couldn't do refresh "..refresh.." on ASUS ROG Ally / ROG Ally X LCD") - return base_mode - end - -@@ -62,15 +60,28 @@ gamescope.config.known_displays.rogally_lcd = { - --debug(inspect(mode)) - return mode - end, -- -- There is only a single panel model in use across both -- -- ROG Ally + ROG Ally X. - matches = function(display) -- if display.vendor == "TMX" and display.model == "TL070FVXS01-0" and display.product == 0x0002 then -- debug("[rogally_lcd] Matched vendor: "..display.vendor.." model: "..display.model.." product:"..display.product) -- return 5000 -+ -- There are two panels used across the ROG Ally and ROG Ally X -+ -- with the same timings, but the model names are in different -+ -- parts of the EDID. -+ local lcd_types = { -+ { vendor = "TMX", model = "TL070FVXS01-0", product = 0x0002 }, -+ { vendor = "BOE", data_string = "TS070FHM-LU0", product = 0x0C33 }, -+ } -+ -+ for index, value in ipairs(lcd_types) do -+ -- We only match if the vendor and product match exactly, plus either model or data_string -+ if value.vendor == display.vendor and value.product == display.product then -+ if (value.model and value.model == display.model) -+ or (value.data_string and value.data_string == display.data_string) then -+ debug("[rogally_lcd] Matched vendor: "..value.vendor.." model: "..(value.model or value.data_string).." product: "..value.product) -+ return 5000 -+ end -+ end - end -+ - return -1 - end - } --debug("Registered ASUS ROG Ally/Ally X LCD as a known display") -+debug("Registered ASUS ROG Ally / ROG Ally X LCD as a known display") - --debug(inspect(gamescope.config.known_displays.rogally_lcd)) --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Colin Kinloch -Date: Sat, 21 Dec 2024 17:24:31 +0000 -Subject: scripts: Search GAMESCOPE_SCRIPT_PATH for scripts - -Adds GAMESCOPE_SCRIPT_PATH as a colon separated list of paths to search for scripts in. - -It's also added to the meson devenv which allows developers to test changes by running: -`meson devenv -C _build` ---- - meson.build | 4 ++++ - src/Script/Script.cpp | 10 ++++++++++ - 2 files changed, 14 insertions(+) - -diff --git a/meson.build b/meson.build -index cc07a59ca99a..562ee1585a6b 100644 ---- a/meson.build -+++ b/meson.build -@@ -102,3 +102,7 @@ endif - - # Handle default script/config stuff - meson.add_install_script('default_scripts_install.sh') -+ -+devenv = environment() -+devenv.set('GAMESCOPE_SCRIPT_PATH', join_paths(meson.current_source_dir(), 'scripts')) -+meson.add_devenv(devenv) -diff --git a/src/Script/Script.cpp b/src/Script/Script.cpp -index ceb1f80e3a77..2d3cd47bb8ec 100644 ---- a/src/Script/Script.cpp -+++ b/src/Script/Script.cpp -@@ -124,10 +124,20 @@ namespace gamescope - - void CScriptManager::RunDefaultScripts() - { -+ const char *sScriptPathEnv = getenv("GAMESCOPE_SCRIPT_PATH"); -+ - if ( cv_script_use_local_scripts ) - { - RunFolder( "../scripts", true ); - } -+ else if ( sScriptPathEnv ) -+ { -+ std::vector sScriptPaths = gamescope::Split( sScriptPathEnv, ":" ); -+ for ( const auto &sScriptPath : sScriptPaths ) -+ { -+ RunFolder( sScriptPath, true ); -+ } -+ } - else - { - RunFolder( SCRIPT_DIR, true ); --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Paul Gofman -Date: Mon, 7 Apr 2025 17:42:30 -0600 -Subject: steamcompmgr: Set receivedDoneCommit even if the commit is not for - current surface in update_wayland_res(). - ---- - src/steamcompmgr.cpp | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp -index d0a069e69c60..e40f95715746 100644 ---- a/src/steamcompmgr.cpp -+++ b/src/steamcompmgr.cpp -@@ -6469,8 +6469,7 @@ void update_wayland_res(CommitDoneList_t *doneCommits, steamcompmgr_win_t *w, Re - wlserver_lock(); - wlr_buffer_unlock( buf ); - wlserver_unlock(); -- -- // Don't mark as recieve done commit, it was for the wrong surface. -+ w->receivedDoneCommit = true; - return; - } - --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: "kingstom.chen" -Date: Tue, 18 Feb 2025 08:59:06 +0800 -Subject: Force wrap file usage for stb and glm dependencies - -the `dependency()` for stb and glm first searched for system-installed versions, -which could an incompatible version (e.g. `stb_image_resize2.h`), it may break the build. - -By forcing the use of the subproject wrap files, it will prevent breaking changes -due to unpredictable system dependency versions. ---- - src/meson.build | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/src/meson.build b/src/meson.build -index 74fc0334d47e..f35f7ef0cb94 100644 ---- a/src/meson.build -+++ b/src/meson.build -@@ -19,11 +19,14 @@ xkbcommon = dependency('xkbcommon') - thread_dep = dependency('threads') - cap_dep = dependency('libcap', required: get_option('rt_cap')) - epoll_dep = dependency('epoll-shim', required: false) --glm_dep = dependency('glm') - sdl2_dep = dependency('SDL2', required: get_option('sdl2_backend')) --stb_dep = dependency('stb') - avif_dep = dependency('libavif', version: '>=1.0.0', required: get_option('avif_screenshots')) - -+glm_proj = subproject('glm') -+glm_dep = glm_proj.get_variable('glm_dep') -+stb_proj = subproject('stb') -+stb_dep = stb_proj.get_variable('stb_dep') -+ - wlroots_dep = dependency( - 'wlroots', - version: ['>= 0.18.0', '< 0.19.0'], --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Matthew Schwartz -Date: Thu, 3 Apr 2025 14:08:50 -0700 -Subject: script: Lenovo Legion Go S LCD display configuration - -This configuration covers the non-VRR limiter of the Lenovo Legion Go S. -In the EDID, only 60Hz and 120Hz are listed as valid modes with different -pixel clocks. Because of this, an LCD Deck style for dynamic modegen works best. - -The refresh rates within this configuration were tested with hundreds of modesets -on my Z2 Go model with a CSW panel. ---- - .../displays/lenovo.legiongos.lcd.lua | 59 +++++++++++++++++++ - 1 file changed, 59 insertions(+) - create mode 100644 scripts/00-gamescope/displays/lenovo.legiongos.lcd.lua - -diff --git a/scripts/00-gamescope/displays/lenovo.legiongos.lcd.lua b/scripts/00-gamescope/displays/lenovo.legiongos.lcd.lua -new file mode 100644 -index 000000000000..6263478c0517 ---- /dev/null -+++ b/scripts/00-gamescope/displays/lenovo.legiongos.lcd.lua -@@ -0,0 +1,59 @@ -+local legiongos_lcd_refresh_rates = { -+ 52, 53, 54, 56, 57, 58, 59, -+ 60, 61, 62, 63, 64, 65, 67, 68, 69, -+ 70, -+ 102, 103, 104, 105, 106, 107, 108, 109, -+ 111, 112, 113, 114, 115, 116, 117, 118, 119, -+ 120 -+} -+ -+gamescope.config.known_displays.legiongos_lcd = { -+ pretty_name = "Lenovo Legion Go S LCD", -+ hdr = { -+ -- The Legion Go S panel does not support HDR. -+ supported = false, -+ force_enabled = false, -+ eotf = gamescope.eotf.gamma22, -+ max_content_light_level = 500, -+ max_frame_average_luminance = 500, -+ min_content_light_level = 0.5 -+ }, -+ -- 60Hz has a different pixel clock than 120Hz in the EDID with VRR disabled, -+ -- and the panel is not responsive to tuning VFPs. To cover the non-VRR -+ -- limiter, an LCD Deck-style dynamic modegen method works best. -+ dynamic_refresh_rates = legiongos_lcd_refresh_rates, -+ dynamic_modegen = function(base_mode, refresh) -+ debug("Generating mode "..refresh.."Hz for Lenovo Legion Go S LCD") -+ local mode = base_mode -+ -+ -- These are only tuned for 1920x1200. -+ gamescope.modegen.set_resolution(mode, 1920, 1200) -+ -+ -- hfp, hsync, hbp -+ gamescope.modegen.set_h_timings(mode, 48, 36, 80) -+ -- vfp, vsync, vbp -+ gamescope.modegen.set_v_timings(mode, 54, 6, 4) -+ mode.clock = gamescope.modegen.calc_max_clock(mode, refresh) -+ mode.vrefresh = gamescope.modegen.calc_vrefresh(mode) -+ -+ --debug(inspect(mode)) -+ return mode -+ end, -+ matches = function(display) -+ local lcd_types = { -+ { vendor = "CSW", model = "PN8007QB1-1", product = 0x0800 }, -+ { vendor = "BOE", model = "NS080WUM-LX1", product = 0x0C00 }, -+ } -+ -+ for index,value in ipairs(lcd_types) do -+ if value.vendor == display.vendor and value.model == display.model and value.product == display.product then -+ debug("[legiongos_lcd] Matched vendor: "..display.vendor.." model: "..display.model.." product: "..display.product) -+ return 5000 -+ end -+ end -+ -+ return -1 -+ end -+} -+debug("Registered Lenovo Legion Go S LCD as a known display") -+--debug(inspect(gamescope.config.known_displays.legiongos_lcd)) --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Matthew Schwartz -Date: Wed, 9 Apr 2025 14:22:16 -0700 -Subject: script: add additional BOE panel - -Some BOE units have panels with different product codes but -identical model names. ---- - scripts/00-gamescope/displays/lenovo.legiongos.lcd.lua | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/scripts/00-gamescope/displays/lenovo.legiongos.lcd.lua b/scripts/00-gamescope/displays/lenovo.legiongos.lcd.lua -index 6263478c0517..32f776c17f3d 100644 ---- a/scripts/00-gamescope/displays/lenovo.legiongos.lcd.lua -+++ b/scripts/00-gamescope/displays/lenovo.legiongos.lcd.lua -@@ -43,6 +43,7 @@ gamescope.config.known_displays.legiongos_lcd = { - local lcd_types = { - { vendor = "CSW", model = "PN8007QB1-1", product = 0x0800 }, - { vendor = "BOE", model = "NS080WUM-LX1", product = 0x0C00 }, -+ { vendor = "BOE", model = "NS080WUM-LX1", product = 0x0CFF }, - } - - for index,value in ipairs(lcd_types) do --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Attila Fidan -Date: Wed, 29 Jan 2025 07:51:13 +0000 -Subject: WaylandBackend: Don't assert on non-xkb-v1 keymaps - -Long story short, there are some edge cases where sway may send -no_keymap to clients when a virtual keyboard is created on the seat, -in specific circumstances. It will later send the xkb keymap before any -key events are sent. Other clients simply ignore non-xkb-v1 keymaps (or -the lack of a keymap), they don't assert. So gamescope should do the -same. ---- - src/Backends/WaylandBackend.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/Backends/WaylandBackend.cpp b/src/Backends/WaylandBackend.cpp -index 22f8ee5c8fac..3207a6b9f7d4 100644 ---- a/src/Backends/WaylandBackend.cpp -+++ b/src/Backends/WaylandBackend.cpp -@@ -2748,7 +2748,8 @@ namespace gamescope - // Ideally we'd use this to influence our keymap to clients, eg. x server. - - defer( close( nFd ) ); -- assert( uFormat == WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1 ); -+ if ( uFormat != WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1 ) -+ return; - - char *pMap = (char *)mmap( nullptr, uSize, PROT_READ, MAP_PRIVATE, nFd, 0 ); - if ( !pMap || pMap == MAP_FAILED ) --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: M Stoeckl -Date: Tue, 21 Jan 2025 16:08:47 -0500 -Subject: main: Give error message on invalid integer or float argument - ---- - src/main.cpp | 54 +++++++++++++++++++++++++++++++++++++++------------- - 1 file changed, 41 insertions(+), 13 deletions(-) - -diff --git a/src/main.cpp b/src/main.cpp -index cd251af559e1..58bede8582fd 100644 ---- a/src/main.cpp -+++ b/src/main.cpp -@@ -425,6 +425,34 @@ static enum gamescope::GamescopeBackend parse_backend_name(const char *str) - } - } - -+static int parse_integer(const char *str, const char *optionName) -+{ -+ auto result = gamescope::Parse(str); -+ if ( result.has_value() ) -+ { -+ return result.value(); -+ } -+ else -+ { -+ fprintf( stderr, "gamescope: invalid value for --%s, \"%s\" is either not an integer or is far too large\n", optionName, str ); -+ exit(1); -+ } -+} -+ -+static float parse_float(const char *str, const char *optionName) -+{ -+ auto result = gamescope::Parse(str); -+ if ( result.has_value() ) -+ { -+ return result.value(); -+ } -+ else -+ { -+ fprintf( stderr, "gamescope: invalid value for --%s, \"%s\" could not be interpreted as a real number\n", optionName, str ); -+ exit(1); -+ } -+} -+ - struct sigaction handle_signal_action = {}; - - void ShutdownGamescope() -@@ -677,25 +705,25 @@ int main(int argc, char **argv) - const char *opt_name; - switch (o) { - case 'w': -- g_nNestedWidth = atoi( optarg ); -+ g_nNestedWidth = parse_integer( optarg, "nested-width" ); - break; - case 'h': -- g_nNestedHeight = atoi( optarg ); -+ g_nNestedHeight = parse_integer( optarg, "nested-height" ); - break; - case 'r': -- g_nNestedRefresh = gamescope::ConvertHztomHz( atoi( optarg ) ); -+ g_nNestedRefresh = gamescope::ConvertHztomHz( parse_integer( optarg, "nested-refresh" ) ); - break; - case 'W': -- g_nPreferredOutputWidth = atoi( optarg ); -+ g_nPreferredOutputWidth = parse_integer( optarg, "output-width" ); - break; - case 'H': -- g_nPreferredOutputHeight = atoi( optarg ); -+ g_nPreferredOutputHeight = parse_integer( optarg, "output-height" ); - break; - case 'o': -- g_nNestedUnfocusedRefresh = gamescope::ConvertHztomHz( atoi( optarg ) ); -+ g_nNestedUnfocusedRefresh = gamescope::ConvertHztomHz( parse_integer( optarg, "nested-unfocused-refresh" ) ); - break; - case 'm': -- g_flMaxWindowScale = atof( optarg ); -+ g_flMaxWindowScale = parse_float( optarg, "max-scale" ); - break; - case 'S': - g_wantedUpscaleScaler = parse_upscaler_scaler(optarg); -@@ -716,7 +744,7 @@ int main(int argc, char **argv) - g_bGrabbed = true; - break; - case 's': -- g_mouseSensitivity = atof( optarg ); -+ g_mouseSensitivity = parse_float( optarg, "mouse-sensitivity" ); - break; - case 'e': - steamMode = true; -@@ -734,21 +762,21 @@ int main(int argc, char **argv) - } else if (strcmp(opt_name, "disable-color-management") == 0) { - g_bForceDisableColorMgmt = true; - } else if (strcmp(opt_name, "xwayland-count") == 0) { -- g_nXWaylandCount = atoi( optarg ); -+ g_nXWaylandCount = parse_integer( optarg, opt_name ); - } else if (strcmp(opt_name, "composite-debug") == 0) { - cv_composite_debug |= CompositeDebugFlag::Markers; - cv_composite_debug |= CompositeDebugFlag::PlaneBorders; - } else if (strcmp(opt_name, "hdr-debug-heatmap") == 0) { - cv_composite_debug |= CompositeDebugFlag::Heatmap; - } else if (strcmp(opt_name, "default-touch-mode") == 0) { -- gamescope::cv_touch_click_mode = (gamescope::TouchClickMode) atoi( optarg ); -+ gamescope::cv_touch_click_mode = (gamescope::TouchClickMode) parse_integer( optarg, opt_name ); - } else if (strcmp(opt_name, "generate-drm-mode") == 0) { - g_eGamescopeModeGeneration = parse_gamescope_mode_generation( optarg ); - } else if (strcmp(opt_name, "force-orientation") == 0) { - g_DesiredInternalOrientation = force_orientation( optarg ); - } else if (strcmp(opt_name, "sharpness") == 0 || - strcmp(opt_name, "fsr-sharpness") == 0) { -- g_upscaleFilterSharpness = atoi( optarg ); -+ g_upscaleFilterSharpness = parse_integer( optarg, opt_name ); - } else if (strcmp(opt_name, "rt") == 0) { - g_bRt = true; - } else if (strcmp(opt_name, "prefer-vk-device") == 0) { -@@ -762,7 +790,7 @@ int main(int argc, char **argv) - } else if (strcmp(opt_name, "force-grab-cursor") == 0) { - g_bForceRelativeMouse = true; - } else if (strcmp(opt_name, "display-index") == 0) { -- g_nNestedDisplayIndex = atoi( optarg ); -+ g_nNestedDisplayIndex = parse_integer( optarg, opt_name ); - } else if (strcmp(opt_name, "adaptive-sync") == 0) { - cv_adaptive_sync = true; - } else if (strcmp(opt_name, "expose-wayland") == 0) { -@@ -770,7 +798,7 @@ int main(int argc, char **argv) - } else if (strcmp(opt_name, "backend") == 0) { - eCurrentBackend = parse_backend_name( optarg ); - } else if (strcmp(opt_name, "cursor-scale-height") == 0) { -- g_nCursorScaleHeight = atoi(optarg); -+ g_nCursorScaleHeight = parse_integer(optarg, opt_name); - } else if (strcmp(opt_name, "mangoapp") == 0) { - g_bLaunchMangoapp = true; - } --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Joshua Ashton -Date: Sat, 7 Sep 2024 22:22:22 +0100 -Subject: protocol: Add gamescope-action-binding protocol - ---- - protocol/gamescope-action-binding.xml | 85 ++++++++++ - protocol/meson.build | 1 + - src/Apps/gamescope_hotkey_example.cpp | 179 +++++++++++++++++++++ - src/WaylandServer/GamescopeActionBinding.h | 163 +++++++++++++++++++ - src/WaylandServer/WaylandDecls.h | 3 + - src/meson.build | 2 + - src/wlserver.cpp | 58 ++++++- - 7 files changed, 489 insertions(+), 2 deletions(-) - create mode 100644 protocol/gamescope-action-binding.xml - create mode 100644 src/Apps/gamescope_hotkey_example.cpp - create mode 100644 src/WaylandServer/GamescopeActionBinding.h - -diff --git a/protocol/gamescope-action-binding.xml b/protocol/gamescope-action-binding.xml -new file mode 100644 -index 000000000000..2164cb87ad84 ---- /dev/null -+++ b/protocol/gamescope-action-binding.xml -@@ -0,0 +1,85 @@ -+ -+ -+ -+ -+ Copyright © 2024 Valve Corporation -+ -+ Permission is hereby granted, free of charge, to any person obtaining a -+ copy of this software and associated documentation files (the "Software"), -+ to deal in the Software without restriction, including without limitation -+ the rights to use, copy, modify, merge, publish, distribute, sublicense, -+ and/or sell copies of the Software, and to permit persons to whom the -+ Software is furnished to do so, subject to the following conditions: -+ -+ The above copyright notice and this permission notice (including the next -+ paragraph) shall be included in all copies or substantial portions of the -+ Software. -+ -+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -+ THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -+ DEALINGS IN THE SOFTWARE. -+ -+ -+ -+ This is a private Gamescope protocol. Regular Wayland clients must not use -+ it. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ Flags that control how the action is armed. -+ -+ -+ -+ -+ -+ -+ -+ Flags that say how the action was triggered. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/protocol/meson.build b/protocol/meson.build -index dbce92edce52..9f75f188af52 100644 ---- a/protocol/meson.build -+++ b/protocol/meson.build -@@ -36,6 +36,7 @@ protocols = [ - 'gamescope-reshade.xml', - 'gamescope-swapchain.xml', - 'gamescope-private.xml', -+ 'gamescope-action-binding.xml', - - # wlroots protocols - 'wlr-layer-shell-unstable-v1.xml', -diff --git a/src/Apps/gamescope_hotkey_example.cpp b/src/Apps/gamescope_hotkey_example.cpp -new file mode 100644 -index 000000000000..ffd88bdfa2c8 ---- /dev/null -+++ b/src/Apps/gamescope_hotkey_example.cpp -@@ -0,0 +1,179 @@ -+#include -+#include -+#include -+#include -+#include -+#include -+#include "convar.h" -+#include "Utils/Version.h" -+ -+#include -+ -+#include -+#include -+ -+// TODO: Consolidate -+#define WAYLAND_NULL() [] ( void *pData, Args... args ) { } -+#define WAYLAND_USERDATA_TO_THIS(type, name) [] ( void *pData, Args... args ) { type *pThing = (type *)pData; pThing->name( std::forward(args)... ); } -+ -+namespace gamescope -+{ -+ class CActionBinding -+ { -+ public: -+ bool Init( gamescope_action_binding_manager *pManager, std::span pKeySyms ) -+ { -+ Shutdown(); -+ -+ m_pBinding = gamescope_action_binding_manager_create_action_binding( pManager ); -+ if ( !m_pBinding ) -+ return false; -+ -+ wl_array array; -+ wl_array_init(&array); -+ for ( uint32_t uKeySym : pKeySyms ) -+ { -+ uint32_t *pKeySymPtr = (uint32_t *)wl_array_add(&array, sizeof(uint32_t) ); -+ *pKeySymPtr = uKeySym; -+ } -+ -+ gamescope_action_binding_add_listener( m_pBinding, &s_BindingListener, (void *)this ); -+ gamescope_action_binding_add_keyboard_trigger( m_pBinding, &array ); -+ gamescope_action_binding_set_description( m_pBinding, "My Example Hotkey :)" ); -+ gamescope_action_binding_arm( m_pBinding, 0 ); -+ -+ return true; -+ } -+ -+ void Shutdown() -+ { -+ if ( m_pBinding ) -+ { -+ gamescope_action_binding_destroy( m_pBinding ); -+ m_pBinding = nullptr; -+ } -+ } -+ -+ void Wayland_Triggered( gamescope_action_binding *pBinding, uint32_t uSequence, uint32_t uTriggerFlags, uint32_t uTimeLo, uint32_t uTimeHi ) -+ { -+ fprintf( stderr, "Hotkey pressed!" ); -+ } -+ -+ private: -+ gamescope_action_binding *m_pBinding = nullptr; -+ -+ static const gamescope_action_binding_listener s_BindingListener; -+ }; -+ -+ const gamescope_action_binding_listener CActionBinding::s_BindingListener = -+ { -+ .triggered = WAYLAND_USERDATA_TO_THIS( CActionBinding, Wayland_Triggered ), -+ }; -+ -+ class GamescopeHotkeyExample -+ { -+ public: -+ GamescopeHotkeyExample(); -+ ~GamescopeHotkeyExample(); -+ -+ bool Init(); -+ void Run(); -+ private: -+ wl_display *m_pDisplay = nullptr; -+ gamescope_action_binding_manager *m_pActionBindingManager = nullptr; -+ -+ void Wayland_Registry_Global( wl_registry *pRegistry, uint32_t uName, const char *pInterface, uint32_t uVersion ); -+ static const wl_registry_listener s_RegistryListener; -+ }; -+ -+ GamescopeHotkeyExample::GamescopeHotkeyExample() -+ { -+ } -+ -+ GamescopeHotkeyExample::~GamescopeHotkeyExample() -+ { -+ } -+ -+ bool GamescopeHotkeyExample::Init() -+ { -+ const char *pDisplayName = getenv( "GAMESCOPE_WAYLAND_DISPLAY" ); -+ if ( !pDisplayName || !*pDisplayName ) -+ pDisplayName = "gamescope-0"; -+ -+ if ( !( m_pDisplay = wl_display_connect( pDisplayName ) ) ) -+ { -+ fprintf( stderr, "Failed to open GAMESCOPE_WAYLAND_DISPLAY.\n" ); -+ return false; -+ } -+ -+ { -+ wl_registry *pRegistry; -+ if ( !( pRegistry = wl_display_get_registry( m_pDisplay ) ) ) -+ { -+ fprintf( stderr, "Failed to get wl_registry.\n" ); -+ return false; -+ } -+ -+ wl_registry_add_listener( pRegistry, &s_RegistryListener, (void *)this ); -+ wl_display_roundtrip( m_pDisplay ); -+ wl_display_roundtrip( m_pDisplay ); -+ -+ if ( !m_pActionBindingManager ) -+ { -+ fprintf( stderr, "Failed to get Gamescope binding manager\n" ); -+ return false; -+ } -+ -+ wl_registry_destroy( pRegistry ); -+ } -+ -+ return true; -+ } -+ -+ void GamescopeHotkeyExample::Run() -+ { -+ // Add a test hotkey of Shift + P. -+ std::vector uKeySyms = { 0xffe1, 0x0070 }; // XKB_KEY_Shift_L + XKB_KEY_p -+ -+ CActionBinding binding; -+ if ( !binding.Init( m_pActionBindingManager, uKeySyms ) ) -+ return; -+ -+ wl_display_flush( m_pDisplay ); -+ -+ for ( ;; ) -+ { -+ wl_display_dispatch( m_pDisplay ); -+ } -+ } -+ -+ void GamescopeHotkeyExample::Wayland_Registry_Global( wl_registry *pRegistry, uint32_t uName, const char *pInterface, uint32_t uVersion ) -+ { -+ if ( !strcmp( pInterface, gamescope_action_binding_manager_interface.name ) ) -+ { -+ m_pActionBindingManager = (decltype(m_pActionBindingManager)) wl_registry_bind( pRegistry, uName, &gamescope_action_binding_manager_interface, uVersion ); -+ } -+ } -+ -+ const wl_registry_listener GamescopeHotkeyExample::s_RegistryListener = -+ { -+ .global = WAYLAND_USERDATA_TO_THIS( GamescopeHotkeyExample, Wayland_Registry_Global ), -+ .global_remove = WAYLAND_NULL(), -+ }; -+ -+ static int RunHotkeyExample( int argc, char *argv[] ) -+ { -+ gamescope::GamescopeHotkeyExample hotkeyExample; -+ if ( !hotkeyExample.Init() ) -+ return 1; -+ -+ hotkeyExample.Run(); -+ -+ return 0; -+ } -+} -+ -+int main( int argc, char *argv[] ) -+{ -+ return gamescope::RunHotkeyExample( argc, argv ); -+} -diff --git a/src/WaylandServer/GamescopeActionBinding.h b/src/WaylandServer/GamescopeActionBinding.h -new file mode 100644 -index 000000000000..81aab05dcd22 ---- /dev/null -+++ b/src/WaylandServer/GamescopeActionBinding.h -@@ -0,0 +1,163 @@ -+#pragma once -+ -+#include "WaylandProtocol.h" -+ -+#include "gamescope-action-binding-protocol.h" -+ -+#include -+#include -+#include -+ -+#include "convar.h" -+#include "Utils/Algorithm.h" -+ -+#include "wlr_begin.hpp" -+#include -+#include -+#include "wlr_end.hpp" -+ -+using namespace std::literals; -+ -+uint64_t get_time_in_nanos(); -+ -+namespace gamescope::WaylandServer -+{ -+ struct Keybind_t -+ { -+ std::unordered_set setKeySyms; -+ }; -+ -+ /////////////////////////// -+ // CGamescopeActionBinding -+ /////////////////////////// -+ class CGamescopeActionBinding : public CWaylandResource -+ { -+ public: -+ WL_PROTO_DEFINE( gamescope_action_binding, 1 ); -+ -+ CGamescopeActionBinding( WaylandResourceDesc_t desc ) -+ : CWaylandResource( desc ) -+ { -+ s_Bindings.push_back( this ); -+ } -+ -+ ~CGamescopeActionBinding() -+ { -+ std::erase_if( s_Bindings, [this]( CGamescopeActionBinding *pBinding ){ return pBinding == this; } ); -+ } -+ -+ // gamescope_action_binding -+ -+ void SetDescription( const char *pszDescription ) -+ { -+ m_sDescription = pszDescription; -+ } -+ -+ void AddKeyboardTrigger( wl_array *pKeysymsArray ) -+ { -+ size_t zKeysymCount = pKeysymsArray->size / sizeof( xkb_keysym_t ); -+ -+ std::span pKeysyms = std::span { -+ reinterpret_cast( pKeysymsArray->data ), -+ zKeysymCount }; -+ -+ std::unordered_set setKeySyms; -+ for ( xkb_keysym_t uKeySym : pKeysyms ) -+ { -+ setKeySyms.emplace( uKeySym ); -+ } -+ -+ m_KeyboardTriggers.emplace_back( std::move( setKeySyms ) ); -+ } -+ -+ void ClearTriggers() -+ { -+ m_KeyboardTriggers.clear(); -+ } -+ -+ void Arm( uint32_t uArmFlags ) -+ { -+ m_ouArmFlags = uArmFlags; -+ } -+ -+ void Disarm() -+ { -+ m_ouArmFlags = std::nullopt; -+ } -+ -+ // -+ -+ bool IsArmed() { return m_ouArmFlags != std::nullopt; } -+ std::span GetKeyboardTriggers() { return m_KeyboardTriggers; } -+ -+ bool Execute() -+ { -+ if ( !IsArmed() ) -+ return false; -+ -+ uint32_t uArmFlags = *m_ouArmFlags; -+ bool bBlockInput = !!( uArmFlags & GAMESCOPE_ACTION_BINDING_ARM_FLAG_NO_BLOCK ); -+ -+ uint32_t uTriggerFlags = GAMESCOPE_ACTION_BINDING_TRIGGER_FLAG_KEYBOARD; -+ -+ uint64_t ulNow = get_time_in_nanos(); -+ -+ static uint32_t s_uSequence = 0; -+ uint32_t uTimeLo = static_cast( ulNow & 0xffffffff ); -+ uint32_t uTimeHi = static_cast( ulNow >> 32 ); -+ gamescope_action_binding_send_triggered( GetResource(), s_uSequence++, uTriggerFlags, uTimeLo, uTimeHi ); -+ -+ if ( uArmFlags & GAMESCOPE_ACTION_BINDING_ARM_FLAG_ONE_SHOT ) -+ Disarm(); -+ -+ return bBlockInput; -+ } -+ -+ static std::span GetBindings() -+ { -+ return s_Bindings; -+ } -+ -+ private: -+ std::string m_sDescription; -+ std::vector m_KeyboardTriggers; -+ -+ std::optional m_ouArmFlags; -+ -+ static std::vector s_Bindings; -+ }; -+ -+ const struct gamescope_action_binding_interface CGamescopeActionBinding::Implementation = -+ { -+ .destroy = WL_PROTO_DESTROY(), -+ .set_description = WL_PROTO( CGamescopeActionBinding, SetDescription ), -+ .add_keyboard_trigger = WL_PROTO( CGamescopeActionBinding, AddKeyboardTrigger ), -+ .clear_triggers = WL_PROTO( CGamescopeActionBinding, ClearTriggers ), -+ .arm = WL_PROTO( CGamescopeActionBinding, Arm ), -+ .disarm = WL_PROTO( CGamescopeActionBinding, Disarm ), -+ }; -+ -+ std::vector CGamescopeActionBinding::s_Bindings; -+ -+ ////////////////////////////////// -+ // CGamescopeActionBindingManager -+ ////////////////////////////////// -+ class CGamescopeActionBindingManager : public CWaylandResource -+ { -+ public: -+ WL_PROTO_DEFINE( gamescope_action_binding_manager, 1 ); -+ WL_PROTO_DEFAULT_CONSTRUCTOR(); -+ -+ void CreateActionBinding( uint32_t uId ) -+ { -+ CWaylandResource::Create( m_pClient, m_uVersion, uId ); -+ } -+ }; -+ -+ const struct gamescope_action_binding_manager_interface CGamescopeActionBindingManager::Implementation = -+ { -+ .destroy = WL_PROTO_DESTROY(), -+ .create_action_binding = WL_PROTO( CGamescopeActionBindingManager, CreateActionBinding ), -+ }; -+ -+} -diff --git a/src/WaylandServer/WaylandDecls.h b/src/WaylandServer/WaylandDecls.h -index e8fd9343192b..e43623aa6a74 100644 ---- a/src/WaylandServer/WaylandDecls.h -+++ b/src/WaylandServer/WaylandDecls.h -@@ -15,4 +15,7 @@ namespace gamescope::WaylandServer - class CReshadeManager; - using CReshade = CWaylandProtocol; - -+ class CGamescopeActionBindingManager; -+ using CGamescopeActionBindingProtocol = CWaylandProtocol; -+ - } -diff --git a/src/meson.build b/src/meson.build -index f35f7ef0cb94..842768ce7ce4 100644 ---- a/src/meson.build -+++ b/src/meson.build -@@ -222,3 +222,5 @@ executable('gamescope_color_microbench', ['color_bench.cpp', 'color_helpers.cpp' - executable('gamescope_color_tests', ['color_tests.cpp', 'color_helpers.cpp'], gamescope_core_src, gamescope_version, dependencies:[glm_dep]) - - executable('gamescopectl', ['Apps/gamescopectl.cpp'], gamescope_core_src, gamescope_version, protocols_client_src, dependencies: [dep_wayland], install:true ) -+ -+executable('gamescope_hotkey_example', ['Apps/gamescope_hotkey_example.cpp'], gamescope_core_src, gamescope_version, protocols_client_src, dependencies: [dep_wayland, xkbcommon], install: false ) -diff --git a/src/wlserver.cpp b/src/wlserver.cpp -index 4ce9511352d0..ffaf7aff7343 100644 ---- a/src/wlserver.cpp -+++ b/src/wlserver.cpp -@@ -20,6 +20,7 @@ - #include "WaylandServer/WaylandProtocol.h" - #include "WaylandServer/LinuxDrmSyncobj.h" - #include "WaylandServer/Reshade.h" -+#include "WaylandServer/GamescopeActionBinding.h" - - #include "wlr_begin.hpp" - #include -@@ -108,6 +109,7 @@ static void wlserver_update_cursor_constraint(); - static void handle_pointer_constraint(struct wl_listener *listener, void *data); - static void wlserver_constrain_cursor( struct wlr_pointer_constraint_v1 *pNewConstraint ); - struct wlr_surface *wlserver_surface_to_main_surface( struct wlr_surface *pSurface ); -+void wlserver_process_hotkeys( wlr_keyboard *keyboard, uint32_t key, bool press ); - - std::vector& gamescope_xwayland_server_t::retrieve_commits() - { -@@ -306,6 +308,9 @@ static void wlserver_handle_key(struct wl_listener *listener, void *data) - } - #endif - -+ // TODO: Remove the below hack when Steam is shipping -+ // `gamescope_action_binding_manager` in Steam Stable -+ // as it can just use a keybind to grab these always. - bool forbidden_key = - keysym == XKB_KEY_XF86AudioLowerVolume || - keysym == XKB_KEY_XF86AudioRaiseVolume || -@@ -324,6 +329,8 @@ static void wlserver_handle_key(struct wl_listener *listener, void *data) - return; - } - } -+ -+ wlserver_process_hotkeys( keyboard->wlr, event->state == WL_KEYBOARD_KEY_STATE_PRESSED, event->time_msec ); - - wlr_seat_set_keyboard( wlserver.wlr.seat, keyboard->wlr ); - wlr_seat_keyboard_notify_key( wlserver.wlr.seat, event->time_msec, event->keycode, event->state ); -@@ -1748,6 +1755,8 @@ bool wlserver_init( void ) { - - create_reshade(); - -+ new gamescope::WaylandServer::CGamescopeActionBindingProtocol( wlserver.display ); -+ - create_gamescope_xwayland(); - - create_gamescope_swapchain_factory_v2(); -@@ -2038,12 +2047,57 @@ void wlserver_keyboardfocus( struct wlr_surface *surface, bool bConstrain ) - } - } - -+void wlserver_process_hotkeys( wlr_keyboard *keyboard, uint32_t key, bool press ) -+{ -+ xkb_keycode_t keycode = key + 8; -+ xkb_keysym_t keysym = xkb_state_key_get_one_sym( keyboard->xkb_state, keycode ); -+ -+ static std::unordered_set s_setPressedKeySyms; -+ if ( press ) -+ { -+ s_setPressedKeySyms.emplace( keysym ); -+ } -+ else -+ { -+ s_setPressedKeySyms.erase( keysym ); -+ } -+ -+ { -+ using namespace gamescope::WaylandServer; -+ -+ std::span ppBindings = CGamescopeActionBinding::GetBindings(); -+ -+ for ( CGamescopeActionBinding *pBinding : ppBindings ) -+ { -+ if ( !pBinding->IsArmed() ) -+ continue; -+ -+ std::span pKeybinds = pBinding->GetKeyboardTriggers(); -+ for ( const Keybind_t &keybind : pKeybinds ) -+ { -+ if ( !pBinding->IsArmed() ) -+ break; -+ -+ if ( s_setPressedKeySyms != keybind.setKeySyms ) -+ continue; -+ -+ if ( pBinding->Execute() ) -+ return; -+ } -+ } -+ } -+} -+ - void wlserver_key( uint32_t key, bool press, uint32_t time ) - { - assert( wlserver_is_lock_held() ); - -- assert( wlserver.wlr.virtual_keyboard_device != nullptr ); -- wlr_seat_set_keyboard( wlserver.wlr.seat, wlserver.wlr.virtual_keyboard_device ); -+ wlr_keyboard *keyboard = wlserver.wlr.virtual_keyboard_device; -+ -+ wlserver_process_hotkeys( keyboard, key, press ); -+ -+ assert( keyboard != nullptr ); -+ wlr_seat_set_keyboard( wlserver.wlr.seat, keyboard ); - wlr_seat_keyboard_notify_key( wlserver.wlr.seat, time, key, press ); - - bump_input_counter(); --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Dionne-Riel -Date: Mon, 14 Oct 2024 20:50:45 -0400 -Subject: wlserver: Re-hook pausing on session pause - -During the refactor in 88eb1b477d8b1efbe6d7087dcde74052dad84049, the -handle_session_active function lost the ultimate role of *causing a -pause* when the session became inactive. - -The duty of pausing the session was given the `DirtyState` function on -the backend, which now uses the same "moral" condition to set the paused -state (`g_DRM.paused = !wlsession_active();`)... - -... except that now `DirtyState` state is only called when the session -is resumed. In turn, this means that on session suspend, nothing ends-up -pausing the DRM backend anymore! - -This change unconditionally calls `DirtyState`, which in turn does the -accounting for pausing the backend. Actually, it conditionally passes -`false` to the argument to force nothing. - -This fixes what ends-up causing `drmModeAtomicCommit: Permission denied` -when moving to another VT from gamescope's. ---- - src/wlserver.cpp | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/src/wlserver.cpp b/src/wlserver.cpp -index ffaf7aff7343..bb87703162be 100644 ---- a/src/wlserver.cpp -+++ b/src/wlserver.cpp -@@ -1347,8 +1347,7 @@ bool wlsession_active() - - static void handle_session_active( struct wl_listener *listener, void *data ) - { -- if (wlserver.wlr.session->active) -- GetBackend()->DirtyState( true, true ); -+ GetBackend()->DirtyState( wlserver.wlr.session->active, wlserver.wlr.session->active ); - wl_log.infof( "Session %s", wlserver.wlr.session->active ? "resumed" : "paused" ); - } - #endif --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Autumn Ashton -Date: Sat, 1 Mar 2025 22:35:56 +0000 -Subject: steamcompmgr: Fix icon/title being spam set - -Overlays should not get an appid, that's just for focus id logic. ---- - src/steamcompmgr.cpp | 23 ++++++++++++++++++++--- - src/steamcompmgr_shared.hpp | 6 ++++++ - 2 files changed, 26 insertions(+), 3 deletions(-) - -diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp -index e40f95715746..f718832ea5c2 100644 ---- a/src/steamcompmgr.cpp -+++ b/src/steamcompmgr.cpp -@@ -3961,8 +3961,10 @@ determine_and_apply_focus() - if ( global_focus.focusWindow ) - { - GetBackend()->GetNestedHints()->SetVisible( true ); -- GetBackend()->GetNestedHints()->SetTitle( global_focus.focusWindow->title ); -- GetBackend()->GetNestedHints()->SetIcon( global_focus.focusWindow->icon ); -+ if ( global_focus.focusWindow != previous_focus.focusWindow ) { -+ GetBackend()->GetNestedHints()->SetTitle( global_focus.focusWindow->title ); -+ GetBackend()->GetNestedHints()->SetIcon( global_focus.focusWindow->icon ); -+ } - } - else - { -@@ -4200,9 +4202,15 @@ map_win(xwayland_ctx_t* ctx, Window id, unsigned long sequence) - { - w->appID = w->xwayland().id; - } -+ - w->isOverlay = get_prop(ctx, w->xwayland().id, ctx->atoms.overlayAtom, 0); - w->isExternalOverlay = get_prop(ctx, w->xwayland().id, ctx->atoms.externalOverlayAtom, 0); - -+ // misyl: Disable appID for overlay types, as parts of the code don't expect that focus-wise. -+ // Fixes mangoapp usage when nested, and not in SteamOS. -+ if ( w->IsAnyOverlay() ) -+ w->appID = 0; -+ - get_size_hints(ctx, w); - - get_net_wm_state(ctx, w); -@@ -4462,6 +4470,9 @@ add_win(xwayland_ctx_t *ctx, Window id, Window prev, unsigned long sequence) - new_win->appID = id; - } - -+ if ( new_win->IsAnyOverlay() ) -+ new_win->appID = 0; -+ - Window transientFor = None; - if ( XGetTransientForHint( ctx->dpy, id, &transientFor ) ) - { -@@ -4693,7 +4704,7 @@ damage_win(xwayland_ctx_t *ctx, XDamageNotifyEvent *de) - if (!w) - return; - -- if ((w->isOverlay || w->isExternalOverlay) && !w->opacity) -+ if (w->IsAnyOverlay() && !w->opacity) - return; - - // First damage event we get, compute focus; we only want to focus damaged -@@ -5295,6 +5306,8 @@ handle_property_notify(xwayland_ctx_t *ctx, XPropertyEvent *ev) - xwm_log.errorf( "appid clash was %u now %u", w->appID, appID ); - } - w->appID = appID; -+ if ( w->IsAnyOverlay() ) -+ w->appID = 0; - - MakeFocusDirty(); - } -@@ -5305,6 +5318,8 @@ handle_property_notify(xwayland_ctx_t *ctx, XPropertyEvent *ev) - if (w) - { - w->isOverlay = get_prop(ctx, w->xwayland().id, ctx->atoms.overlayAtom, 0); -+ if ( w->IsAnyOverlay() ) -+ w->appID = 0; - MakeFocusDirty(); - } - } -@@ -5314,6 +5329,8 @@ handle_property_notify(xwayland_ctx_t *ctx, XPropertyEvent *ev) - if (w) - { - w->isExternalOverlay = get_prop(ctx, w->xwayland().id, ctx->atoms.externalOverlayAtom, 0); -+ if ( w->IsAnyOverlay() ) -+ w->appID = 0; - MakeFocusDirty(); - } - } -diff --git a/src/steamcompmgr_shared.hpp b/src/steamcompmgr_shared.hpp -index f300eb94d954..989d09d50c4a 100644 ---- a/src/steamcompmgr_shared.hpp -+++ b/src/steamcompmgr_shared.hpp -@@ -116,6 +116,12 @@ struct steamcompmgr_win_t { - uint32_t appID = 0; - bool isOverlay = false; - bool isExternalOverlay = false; -+ -+ bool IsAnyOverlay() const -+ { -+ return isOverlay || isExternalOverlay; -+ } -+ - bool isFullscreen = false; - bool isSysTrayIcon = false; - bool sizeHintsSpecified = false; --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Autumn Ashton -Date: Sun, 2 Mar 2025 00:36:38 +0000 -Subject: steamcompmgr: Fix Steam sidebars with recent icon fix - ---- - src/steamcompmgr.cpp | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp -index f718832ea5c2..e46c34bbfbc0 100644 ---- a/src/steamcompmgr.cpp -+++ b/src/steamcompmgr.cpp -@@ -4208,7 +4208,7 @@ map_win(xwayland_ctx_t* ctx, Window id, unsigned long sequence) - - // misyl: Disable appID for overlay types, as parts of the code don't expect that focus-wise. - // Fixes mangoapp usage when nested, and not in SteamOS. -- if ( w->IsAnyOverlay() ) -+ if ( w->isExternalOverlay ) - w->appID = 0; - - get_size_hints(ctx, w); -@@ -4470,7 +4470,7 @@ add_win(xwayland_ctx_t *ctx, Window id, Window prev, unsigned long sequence) - new_win->appID = id; - } - -- if ( new_win->IsAnyOverlay() ) -+ if ( new_win->isExternalOverlay ) - new_win->appID = 0; - - Window transientFor = None; -@@ -5306,7 +5306,7 @@ handle_property_notify(xwayland_ctx_t *ctx, XPropertyEvent *ev) - xwm_log.errorf( "appid clash was %u now %u", w->appID, appID ); - } - w->appID = appID; -- if ( w->IsAnyOverlay() ) -+ if ( w->isExternalOverlay ) - w->appID = 0; - - MakeFocusDirty(); -@@ -5318,7 +5318,7 @@ handle_property_notify(xwayland_ctx_t *ctx, XPropertyEvent *ev) - if (w) - { - w->isOverlay = get_prop(ctx, w->xwayland().id, ctx->atoms.overlayAtom, 0); -- if ( w->IsAnyOverlay() ) -+ if ( w->isExternalOverlay ) - w->appID = 0; - MakeFocusDirty(); - } -@@ -5329,7 +5329,7 @@ handle_property_notify(xwayland_ctx_t *ctx, XPropertyEvent *ev) - if (w) - { - w->isExternalOverlay = get_prop(ctx, w->xwayland().id, ctx->atoms.externalOverlayAtom, 0); -- if ( w->IsAnyOverlay() ) -+ if ( w->isExternalOverlay ) - w->appID = 0; - MakeFocusDirty(); - } --- -2.50.1 - - From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Antheas Kapenekakis Date: Fri, 22 Nov 2024 01:37:48 +0100 @@ -2609,7 +36,7 @@ index 000000000000..8dd5815d4aeb + # sudo reboot +EOF -- -2.50.1 +2.51.0 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 @@ -2629,26 +56,26 @@ Co-authored-by: Antheas Kapenekakis 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp -index 06ebbe7255d4..ffce5d7d8448 100644 +index 1ec2699821f0..c8e821314dc4 100644 --- a/src/Backends/DRMBackend.cpp +++ b/src/Backends/DRMBackend.cpp -@@ -2253,8 +2253,10 @@ namespace gamescope +@@ -2342,8 +2342,10 @@ namespace gamescope } else { + if ( g_customRefreshRates.size() > 0 && GetScreenType() == GAMESCOPE_SCREEN_TYPE_INTERNAL ) + m_Mutable.ValidDynamicRefreshRates = g_customRefreshRates; // Unknown display, see if there are any other refresh rates in the EDID we can get. -- if ( GetScreenType() == GAMESCOPE_SCREEN_TYPE_INTERNAL ) -+ else if ( GetScreenType() == GAMESCOPE_SCREEN_TYPE_INTERNAL ) +- if ( GetScreenType() == GAMESCOPE_SCREEN_TYPE_INTERNAL || cv_drm_allow_dynamic_modes_for_external_display ) ++ else if ( GetScreenType() == GAMESCOPE_SCREEN_TYPE_INTERNAL || cv_drm_allow_dynamic_modes_for_external_display ) { const drmModeModeInfo *pPreferredMode = find_mode( m_pConnector.get(), 0, 0, 0 ); diff --git a/src/main.cpp b/src/main.cpp -index 58bede8582fd..1443f49b51e9 100644 +index cdb35c3b2518..d63b1fe50cc6 100644 --- a/src/main.cpp +++ b/src/main.cpp -@@ -129,6 +129,7 @@ const struct option *gamescope_options = (struct option[]){ +@@ -133,6 +133,7 @@ const struct option *gamescope_options = (struct option[]){ { "fade-out-duration", required_argument, nullptr, 0 }, { "force-orientation", required_argument, nullptr, 0 }, { "force-windows-fullscreen", no_argument, nullptr, 0 }, @@ -2656,7 +83,7 @@ index 58bede8582fd..1443f49b51e9 100644 { "disable-color-management", no_argument, nullptr, 0 }, { "sdr-gamut-wideness", required_argument, nullptr, 0 }, -@@ -202,6 +203,7 @@ const char usage[] = +@@ -207,6 +208,7 @@ const char usage[] = " --hdr-itm-target-nits set the target luminace of the inverse tone mapping process.\n" " Default: 1000 nits, Max: 10000 nits\n" " --framerate-limit Set a simple framerate limit. Used as a divisor of the refresh rate, rounds down eg 60 / 59 -> 60fps, 60 / 25 -> 30fps. Default: 0, disabled.\n" @@ -2664,7 +91,7 @@ index 58bede8582fd..1443f49b51e9 100644 " --mangoapp Launch with the mangoapp (mangohud) performance overlay enabled. You should use this instead of using mangohud on the game or gamescope.\n" " --adaptive-sync Enable adaptive sync if available (variable rate refresh)\n" "\n" -@@ -453,6 +455,33 @@ static float parse_float(const char *str, const char *optionName) +@@ -460,6 +462,33 @@ static float parse_float(const char *str, const char *optionName) } } @@ -2698,7 +125,7 @@ index 58bede8582fd..1443f49b51e9 100644 struct sigaction handle_signal_action = {}; void ShutdownGamescope() -@@ -774,6 +803,8 @@ int main(int argc, char **argv) +@@ -783,6 +812,8 @@ int main(int argc, char **argv) g_eGamescopeModeGeneration = parse_gamescope_mode_generation( optarg ); } else if (strcmp(opt_name, "force-orientation") == 0) { g_DesiredInternalOrientation = force_orientation( optarg ); @@ -2728,7 +155,7 @@ index 2e6fb833af12..390c04a63ecd 100644 enum class GamescopeUpscaleFilter : uint32_t { -- -2.50.1 +2.51.0 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 @@ -2741,14 +168,14 @@ allows for CTRL for a smooth transition. Suggested-by: Antheas Kapenekakis --- - src/wlserver.cpp | 27 +++++++++++++++++++++++++-- - 1 file changed, 25 insertions(+), 2 deletions(-) + src/wlserver.cpp | 23 ++++++++++++++++++++++- + 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/wlserver.cpp b/src/wlserver.cpp -index bb87703162be..8b58050fd6d7 100644 +index 4d8546eed51f..56a9f25cd03a 100644 --- a/src/wlserver.cpp +++ b/src/wlserver.cpp -@@ -292,6 +292,9 @@ static void wlserver_handle_modifiers(struct wl_listener *listener, void *data) +@@ -296,6 +296,9 @@ static void wlserver_handle_modifiers(struct wl_listener *listener, void *data) bump_input_counter(); } @@ -2757,8 +184,8 @@ index bb87703162be..8b58050fd6d7 100644 + static void wlserver_handle_key(struct wl_listener *listener, void *data) { - struct wlserver_keyboard *keyboard = wl_container_of( listener, keyboard, key ); -@@ -315,7 +318,14 @@ static void wlserver_handle_key(struct wl_listener *listener, void *data) + struct wlr_keyboard *keyboard = &wlserver.keyboard_group->keyboard; +@@ -319,7 +322,14 @@ static void wlserver_handle_key(struct wl_listener *listener, void *data) keysym == XKB_KEY_XF86AudioLowerVolume || keysym == XKB_KEY_XF86AudioRaiseVolume || keysym == XKB_KEY_XF86PowerOff; @@ -2766,20 +193,18 @@ index bb87703162be..8b58050fd6d7 100644 + + // Check for steam overlay key (ctrl/super + 1/2) + bool is_steamshortcut = -+ ((env_gs_enable_ctrl_12 && (keyboard->wlr->modifiers.depressed & WLR_MODIFIER_CTRL)) || -+ (keyboard->wlr->modifiers.depressed & WLR_MODIFIER_LOGO)) && ++ ((env_gs_enable_ctrl_12 && (keyboard->modifiers.depressed & WLR_MODIFIER_CTRL)) || ++ (keyboard->modifiers.depressed & WLR_MODIFIER_LOGO)) && + (keysym == XKB_KEY_1 || keysym == XKB_KEY_2); + + if ( ( event->state == WL_KEYBOARD_KEY_STATE_PRESSED || event->state == WL_KEYBOARD_KEY_STATE_RELEASED ) && (forbidden_key || is_steamshortcut) ) { // Always send volume+/- to root server only, to avoid it reaching the game. struct wlr_surface *old_kb_surf = wlserver.kb_focus_surface; -@@ -323,9 +333,22 @@ static void wlserver_handle_key(struct wl_listener *listener, void *data) - if ( new_kb_surf ) +@@ -328,6 +338,17 @@ static void wlserver_handle_key(struct wl_listener *listener, void *data) { wlserver_keyboardfocus( new_kb_surf, false ); -- wlr_seat_set_keyboard( wlserver.wlr.seat, keyboard->wlr ); -+ wlr_seat_set_keyboard( wlserver.wlr.seat, wlserver.wlr.virtual_keyboard_device ); + wlr_seat_set_keyboard( wlserver.wlr.seat, keyboard ); + + if (is_steamshortcut) + { @@ -2793,13 +218,9 @@ index bb87703162be..8b58050fd6d7 100644 + wlr_seat_keyboard_notify_key( wlserver.wlr.seat, event->time_msec, event->keycode, event->state ); wlserver_keyboardfocus( old_kb_surf, false ); -+ wlr_seat_set_keyboard( wlserver.wlr.seat, keyboard->wlr ); -+ return; - } - } -- -2.50.1 +2.51.0 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 @@ -2812,10 +233,10 @@ Subject: fix(external): fix crash when using external touchscreens 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/wlserver.cpp b/src/wlserver.cpp -index 8b58050fd6d7..0b99c498e55d 100644 +index 56a9f25cd03a..4d6e8de55ba4 100644 --- a/src/wlserver.cpp +++ b/src/wlserver.cpp -@@ -2552,8 +2552,12 @@ static void apply_touchscreen_orientation(double *x, double *y ) +@@ -2766,8 +2766,12 @@ static void apply_touchscreen_orientation(double *x, double *y ) double tx = 0; double ty = 0; @@ -2831,7 +252,7 @@ index 8b58050fd6d7..0b99c498e55d 100644 default: case GAMESCOPE_PANEL_ORIENTATION_AUTO: -- -2.50.1 +2.51.0 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 @@ -2847,10 +268,10 @@ custom modeline generation has been provided. 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp -index ffce5d7d8448..c4f358fbc933 100644 +index c8e821314dc4..a919c61f9f8d 100644 --- a/src/Backends/DRMBackend.cpp +++ b/src/Backends/DRMBackend.cpp -@@ -2169,7 +2169,9 @@ namespace gamescope +@@ -2258,7 +2258,9 @@ namespace gamescope sol::optional otDynamicRefreshRates = tTable["dynamic_refresh_rates"]; sol::optional ofnDynamicModegen = tTable["dynamic_modegen"]; @@ -2862,7 +283,7 @@ index ffce5d7d8448..c4f358fbc933 100644 m_Mutable.ValidDynamicRefreshRates = TableToVector( *otDynamicRefreshRates ); -- -2.50.1 +2.51.0 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 @@ -2871,24 +292,24 @@ Date: Wed, 30 Oct 2024 00:39:03 +0100 Subject: fix(battery): run at half hz while at steamUI with atom --- - src/steamcompmgr.cpp | 44 ++++++++++++++++++++++++++++++++++---------- + src/steamcompmgr.cpp | 53 +++++++++++++++++++++++++++++++++++--------- src/xwayland_ctx.hpp | 2 ++ - 2 files changed, 36 insertions(+), 10 deletions(-) + 2 files changed, 45 insertions(+), 10 deletions(-) diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp -index e46c34bbfbc0..3b3a106b13e9 100644 +index b0cf080e0642..07e45b19fc61 100644 --- a/src/steamcompmgr.cpp +++ b/src/steamcompmgr.cpp -@@ -165,6 +165,8 @@ uint32_t g_reshade_technique_idx = 0; +@@ -172,6 +172,8 @@ uint32_t g_reshade_technique_idx = 0; bool g_bSteamIsActiveWindow = false; bool g_bForceInternal = false; +bool b_bForceFrameLimit = false; +bool g_bRefreshHalveEnable = false; - static std::vector< steamcompmgr_win_t* > GetGlobalPossibleFocusWindows(); - static bool -@@ -791,6 +793,7 @@ uint64_t g_uCurrentBasePlaneCommitID = 0; + namespace gamescope + { +@@ -928,6 +930,7 @@ uint64_t g_uCurrentBasePlaneCommitID = 0; bool g_bCurrentBasePlaneIsFifo = false; static int g_nSteamCompMgrTargetFPS = 0; @@ -2896,7 +317,7 @@ index e46c34bbfbc0..3b3a106b13e9 100644 static uint64_t g_uDynamicRefreshEqualityTime = 0; static int g_nDynamicRefreshRate[gamescope::GAMESCOPE_SCREEN_TYPE_COUNT] = { 0, 0 }; // Delay to stop modes flickering back and forth. -@@ -810,7 +813,7 @@ static void _update_app_target_refresh_cycle() +@@ -947,7 +950,7 @@ static void _update_app_target_refresh_cycle() int target_fps = g_nCombinedAppRefreshCycleOverride[type]; g_nDynamicRefreshRate[ type ] = 0; @@ -2905,7 +326,7 @@ index e46c34bbfbc0..3b3a106b13e9 100644 if ( !target_fps ) { -@@ -819,7 +822,7 @@ static void _update_app_target_refresh_cycle() +@@ -956,7 +959,7 @@ static void _update_app_target_refresh_cycle() if ( g_nCombinedAppRefreshCycleChangeFPS[ type ] ) { @@ -2914,7 +335,7 @@ index e46c34bbfbc0..3b3a106b13e9 100644 } if ( g_nCombinedAppRefreshCycleChangeRefresh[ type ] ) -@@ -840,9 +843,9 @@ static void _update_app_target_refresh_cycle() +@@ -977,9 +980,9 @@ static void _update_app_target_refresh_cycle() static void update_app_target_refresh_cycle() { @@ -2926,7 +347,7 @@ index e46c34bbfbc0..3b3a106b13e9 100644 update_runtime_info(); } -@@ -5052,7 +5055,7 @@ update_runtime_info() +@@ -5316,7 +5319,7 @@ update_runtime_info() if ( g_nRuntimeInfoFd < 0 ) return; @@ -2935,7 +356,7 @@ index e46c34bbfbc0..3b3a106b13e9 100644 pwrite( g_nRuntimeInfoFd, &limiter_enabled, sizeof( limiter_enabled ), 0 ); } -@@ -5115,7 +5118,7 @@ static bool steamcompmgr_should_vblank_window( bool bShouldLimitFPS, uint64_t vb +@@ -5379,7 +5382,7 @@ static bool steamcompmgr_should_vblank_window( bool bShouldLimitFPS, uint64_t vb { bool bCloseEnough = std::abs( g_nSteamCompMgrTargetFPS - nRefreshHz ) < 2; @@ -2944,7 +365,7 @@ index e46c34bbfbc0..3b3a106b13e9 100644 { uint64_t schedule = w->last_commit_first_latch_time + g_SteamCompMgrLimitedAppRefreshCycle; -@@ -5133,7 +5136,7 @@ static bool steamcompmgr_should_vblank_window( bool bShouldLimitFPS, uint64_t vb +@@ -5397,7 +5400,7 @@ static bool steamcompmgr_should_vblank_window( bool bShouldLimitFPS, uint64_t vb } else { @@ -2953,7 +374,7 @@ index e46c34bbfbc0..3b3a106b13e9 100644 { int nVblankDivisor = nRefreshHz / nTargetFPS; -@@ -5516,7 +5519,7 @@ handle_property_notify(xwayland_ctx_t *ctx, XPropertyEvent *ev) +@@ -5796,7 +5799,7 @@ handle_property_notify(xwayland_ctx_t *ctx, XPropertyEvent *ev) } if ( ev->atom == ctx->atoms.gamescopeFPSLimit ) { @@ -2962,7 +383,7 @@ index e46c34bbfbc0..3b3a106b13e9 100644 update_runtime_info(); } for (int i = 0; i < gamescope::GAMESCOPE_SCREEN_TYPE_COUNT; i++) -@@ -5943,6 +5946,10 @@ handle_property_notify(xwayland_ctx_t *ctx, XPropertyEvent *ev) +@@ -6227,6 +6230,10 @@ handle_property_notify(xwayland_ctx_t *ctx, XPropertyEvent *ev) MakeFocusDirty(); } } @@ -2973,7 +394,7 @@ index e46c34bbfbc0..3b3a106b13e9 100644 } static int -@@ -6300,7 +6307,7 @@ void handle_presented_for_window( steamcompmgr_win_t* w ) +@@ -6603,7 +6610,7 @@ void handle_presented_for_window( steamcompmgr_win_t* w ) uint64_t next_refresh_time = g_SteamCompMgrVBlankTime.schedule.ulTargetVBlank; @@ -2982,7 +403,7 @@ index e46c34bbfbc0..3b3a106b13e9 100644 ? g_SteamCompMgrLimitedAppRefreshCycle : g_SteamCompMgrAppRefreshCycle; -@@ -7124,6 +7131,8 @@ void init_xwayland_ctx(uint32_t serverId, gamescope_xwayland_server_t *xwayland_ +@@ -7462,6 +7469,8 @@ void init_xwayland_ctx(uint32_t serverId, gamescope_xwayland_server_t *xwayland_ ctx->atoms.primarySelection = XInternAtom(ctx->dpy, "PRIMARY", false); ctx->atoms.targets = XInternAtom(ctx->dpy, "TARGETS", false); @@ -2991,7 +412,7 @@ index e46c34bbfbc0..3b3a106b13e9 100644 ctx->root_width = DisplayWidth(ctx->dpy, ctx->scr); ctx->root_height = DisplayHeight(ctx->dpy, ctx->scr); -@@ -7542,7 +7551,7 @@ steamcompmgr_main(int argc, char **argv) +@@ -7883,7 +7892,7 @@ steamcompmgr_main(int argc, char **argv) } else if (strcmp(opt_name, "hdr-itm-target-nits") == 0) { g_flHDRItmTargetNits = atof(optarg); } else if (strcmp(opt_name, "framerate-limit") == 0) { @@ -3000,12 +421,21 @@ index e46c34bbfbc0..3b3a106b13e9 100644 } else if (strcmp(opt_name, "reshade-effect") == 0) { g_reshade_effect = optarg; } else if (strcmp(opt_name, "reshade-technique-idx") == 0) { -@@ -7667,6 +7676,21 @@ steamcompmgr_main(int argc, char **argv) +@@ -8051,6 +8060,30 @@ steamcompmgr_main(int argc, char **argv) // as a question. const bool bIsVBlankFromTimer = vblank; -+ if ( g_bRefreshHalveEnable && window_is_steam( global_focus.focusWindow ) ) { -+ // Halve refresh rate on SteamUI ++ // Halve refresh rate on SteamUI ++ bool isSteam = false; ++ for (auto &iter : g_VirtualConnectorFocuses) ++ { ++ global_focus_t *pFocus = &iter.second; ++ if (window_is_steam( pFocus->focusWindow )) { ++ isSteam = true; ++ break; ++ } ++ } ++ if ( g_bRefreshHalveEnable && isSteam ) { + int nRealRefreshHz = gamescope::ConvertmHzToHz( g_nNestedRefresh ? g_nNestedRefresh : g_nOutputRefresh ); + if (nRealRefreshHz > 100 && (g_nSteamCompMgrTargetFPSreq > 50 || !g_nSteamCompMgrTargetFPSreq)) { + g_nSteamCompMgrTargetFPS = nRealRefreshHz / 2; @@ -3020,7 +450,7 @@ index e46c34bbfbc0..3b3a106b13e9 100644 + } + // We can always vblank if VRR. - const bool bVRR = GetBackend()->IsVRRActive(); + const bool bVRR = GetBackend()->GetCurrentConnector() && GetBackend()->GetCurrentConnector()->IsVRRActive(); if ( bVRR ) diff --git a/src/xwayland_ctx.hpp b/src/xwayland_ctx.hpp index df2af70d19ae..e4eec9fa0c48 100644 @@ -3036,165 +466,7 @@ index df2af70d19ae..e4eec9fa0c48 100644 bool HasQueuedEvents(); -- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Antheas Kapenekakis -Date: Wed, 13 Nov 2024 17:22:05 +0100 -Subject: feat: add DPMS support through an Atom - ---- - src/Backends/DRMBackend.cpp | 16 +++++++++++++--- - src/rendervulkan.hpp | 2 ++ - src/steamcompmgr.cpp | 15 ++++++++++++--- - src/xwayland_ctx.hpp | 1 + - 4 files changed, 28 insertions(+), 6 deletions(-) - -diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp -index c4f358fbc933..856b03fc3747 100644 ---- a/src/Backends/DRMBackend.cpp -+++ b/src/Backends/DRMBackend.cpp -@@ -2702,6 +2702,9 @@ int drm_prepare( struct drm_t *drm, bool async, const struct FrameInfo_t *frameI - drm->needs_modeset = true; - } - -+ if (drm->pCRTC && drm->pCRTC->GetProperties().ACTIVE->GetCurrentValue() != !frameInfo->dpms) -+ drm->needs_modeset = true; -+ - drm_colorspace uColorimetry = DRM_MODE_COLORIMETRY_DEFAULT; - - const bool bWantsHDR10 = g_bOutputHDREnabled && frameInfo->outputEncodingEOTF == EOTF_PQ; -@@ -2757,7 +2760,7 @@ int drm_prepare( struct drm_t *drm, bool async, const struct FrameInfo_t *frameI - uint32_t flags = DRM_MODE_ATOMIC_NONBLOCK; - - // We do internal refcounting with these events -- if ( drm->pCRTC != nullptr ) -+ if ( !frameInfo->dpms && drm->pCRTC != nullptr) - flags |= DRM_MODE_PAGE_FLIP_EVENT; - - if ( async || g_bForceAsyncFlips ) -@@ -2830,7 +2833,13 @@ int drm_prepare( struct drm_t *drm, bool async, const struct FrameInfo_t *frameI - - if ( drm->pCRTC ) - { -- drm->pCRTC->GetProperties().ACTIVE->SetPendingValue( drm->req, 1u, true ); -+ if ( frameInfo->dpms ) { -+ // We can't disable a CRTC if it's already disabled -+ if (drm->pCRTC->GetProperties().ACTIVE->GetCurrentValue() != 0) -+ drm->pCRTC->GetProperties().ACTIVE->SetPendingValue(drm->req, 0, true); -+ } -+ else -+ drm->pCRTC->GetProperties().ACTIVE->SetPendingValue( drm->req, 1u, true ); - drm->pCRTC->GetProperties().MODE_ID->SetPendingValue( drm->req, drm->pending.mode_id ? drm->pending.mode_id->GetBlobValue() : 0lu, true ); - - if ( drm->pCRTC->GetProperties().VRR_ENABLED ) -@@ -2861,7 +2870,7 @@ int drm_prepare( struct drm_t *drm, bool async, const struct FrameInfo_t *frameI - drm->flags = flags; - - int ret; -- if ( drm->pCRTC == nullptr ) { -+ if (frameInfo->dpms || drm->pCRTC == nullptr ) { - ret = 0; - } else if ( drm->bUseLiftoff ) { - ret = drm_prepare_liftoff( drm, frameInfo, needs_modeset ); -@@ -3424,6 +3433,7 @@ namespace gamescope - - FrameInfo_t presentCompFrameInfo = {}; - presentCompFrameInfo.allowVRR = pFrameInfo->allowVRR; -+ presentCompFrameInfo.dpms = pFrameInfo->dpms; - presentCompFrameInfo.outputEncodingEOTF = pFrameInfo->outputEncodingEOTF; - - if ( bNeedsFullComposite ) -diff --git a/src/rendervulkan.hpp b/src/rendervulkan.hpp -index a3a11a7ba96f..0f8cba8516c0 100644 ---- a/src/rendervulkan.hpp -+++ b/src/rendervulkan.hpp -@@ -281,6 +281,8 @@ struct FrameInfo_t - bool applyOutputColorMgmt; // drm only - EOTF outputEncodingEOTF; - -+ bool dpms; -+ - int layerCount; - struct Layer_t - { -diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp -index 3b3a106b13e9..fcdc9ac1559f 100644 ---- a/src/steamcompmgr.cpp -+++ b/src/steamcompmgr.cpp -@@ -167,6 +167,8 @@ bool g_bSteamIsActiveWindow = false; - bool g_bForceInternal = false; - bool b_bForceFrameLimit = false; - bool g_bRefreshHalveEnable = false; -+bool g_bDPMS = false; -+bool g_bDPMS_set = false; - - static std::vector< steamcompmgr_win_t* > GetGlobalPossibleFocusWindows(); - static bool -@@ -2254,7 +2256,7 @@ bool ShouldDrawCursor() - } - - static void --paint_all(bool async) -+paint_all( bool async, bool dpms ) - { - gamescope_xwayland_server_t *root_server = wlserver_get_xwayland_server(0); - xwayland_ctx_t *root_ctx = root_server->ctx.get(); -@@ -2305,6 +2307,7 @@ paint_all(bool async) - frameInfo.outputEncodingEOTF = g_ColorMgmt.pending.outputEncodingEOTF; - frameInfo.allowVRR = cv_adaptive_sync; - frameInfo.bFadingOut = fadingOut; -+ frameInfo.dpms = dpms; - - // If the window we'd paint as the base layer is the streaming client, - // find the video underlay and put it up first in the scenegraph -@@ -5950,6 +5953,10 @@ handle_property_notify(xwayland_ctx_t *ctx, XPropertyEvent *ev) - { - g_bRefreshHalveEnable = !!get_prop( ctx, ctx->root, ctx->atoms.gamescopeFrameHalveAtom, 0 ); - } -+ if (ev->atom == ctx->atoms.gamescopeDPMS) -+ { -+ g_bDPMS = !!get_prop(ctx, ctx->root, ctx->atoms.gamescopeDPMS, 0); -+ } - } - - static int -@@ -7132,6 +7139,7 @@ void init_xwayland_ctx(uint32_t serverId, gamescope_xwayland_server_t *xwayland_ - ctx->atoms.targets = XInternAtom(ctx->dpy, "TARGETS", false); - - ctx->atoms.gamescopeFrameHalveAtom = XInternAtom( ctx->dpy, "GAMESCOPE_STEAMUI_HALFHZ", false );; -+ ctx->atoms.gamescopeDPMS = XInternAtom(ctx->dpy, "GAMESCOPE_DPMS", false); - - ctx->root_width = DisplayWidth(ctx->dpy, ctx->scr); - ctx->root_height = DisplayHeight(ctx->dpy, ctx->scr); -@@ -8127,9 +8135,10 @@ steamcompmgr_main(int argc, char **argv) - bShouldPaint = true; - } - -- if ( bShouldPaint ) -+ if ( bShouldPaint || (g_bDPMS != g_bDPMS_set && vblank) ) - { -- paint_all( eFlipType == FlipType::Async ); -+ g_bDPMS_set = g_bDPMS; -+ paint_all( eFlipType == FlipType::Async, g_bDPMS ); - - hasRepaint = false; - hasRepaintNonBasePlane = false; -diff --git a/src/xwayland_ctx.hpp b/src/xwayland_ctx.hpp -index e4eec9fa0c48..2347cbb3340c 100644 ---- a/src/xwayland_ctx.hpp -+++ b/src/xwayland_ctx.hpp -@@ -248,6 +248,7 @@ struct xwayland_ctx_t final : public gamescope::IWaitable - Atom targets; - - Atom gamescopeFrameHalveAtom; -+ Atom gamescopeDPMS; - } atoms; - - bool HasQueuedEvents(); --- -2.50.1 +2.51.0 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 @@ -3215,10 +487,10 @@ Subject: feat(intel): add rotation shader for rotating output create mode 100644 src/shaders/cs_rotation.comp diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp -index 856b03fc3747..e1547f4a1a9b 100644 +index a919c61f9f8d..a099185e7cdc 100644 --- a/src/Backends/DRMBackend.cpp +++ b/src/Backends/DRMBackend.cpp -@@ -1530,6 +1530,10 @@ static void update_drm_effective_orientations( struct drm_t *drm, const drmModeM +@@ -1609,6 +1609,10 @@ static void update_drm_effective_orientations( struct drm_t *drm, const drmModeM if ( pDRMInternalConnector != drm->pConnector ) pInternalMode = find_mode( pDRMInternalConnector->GetModeConnector(), 0, 0, 0 ); @@ -3229,7 +501,7 @@ index 856b03fc3747..e1547f4a1a9b 100644 pDRMInternalConnector->UpdateEffectiveOrientation( pInternalMode ); } -@@ -1541,6 +1545,10 @@ static void update_drm_effective_orientations( struct drm_t *drm, const drmModeM +@@ -1620,6 +1624,10 @@ static void update_drm_effective_orientations( struct drm_t *drm, const drmModeM if ( pDRMExternalConnector != drm->pConnector ) pExternalMode = find_mode( pDRMExternalConnector->GetModeConnector(), 0, 0, 0 ); @@ -3240,7 +512,7 @@ index 856b03fc3747..e1547f4a1a9b 100644 pDRMExternalConnector->UpdateEffectiveOrientation( pExternalMode ); } } -@@ -1754,7 +1762,7 @@ LiftoffStateCacheEntry FrameInfoToLiftoffStateCacheEntry( struct drm_t *drm, con +@@ -1835,7 +1843,7 @@ LiftoffStateCacheEntry FrameInfoToLiftoffStateCacheEntry( struct drm_t *drm, con uint64_t crtcW = srcWidth / frameInfo->layers[ i ].scale.x; uint64_t crtcH = srcHeight / frameInfo->layers[ i ].scale.y; @@ -3249,7 +521,7 @@ index 856b03fc3747..e1547f4a1a9b 100644 { int64_t imageH = frameInfo->layers[ i ].tex->contentHeight() / frameInfo->layers[ i ].scale.y; -@@ -2047,6 +2055,17 @@ namespace gamescope +@@ -2136,6 +2144,17 @@ namespace gamescope void CDRMConnector::UpdateEffectiveOrientation( const drmModeModeInfo *pMode ) { @@ -3267,7 +539,7 @@ index 856b03fc3747..e1547f4a1a9b 100644 if ( this->GetScreenType() == GAMESCOPE_SCREEN_TYPE_INTERNAL && g_DesiredInternalOrientation != GAMESCOPE_PANEL_ORIENTATION_AUTO ) { m_ChosenOrientation = g_DesiredInternalOrientation; -@@ -3068,6 +3087,13 @@ bool drm_set_mode( struct drm_t *drm, const drmModeModeInfo *mode ) +@@ -3185,6 +3204,13 @@ bool drm_set_mode( struct drm_t *drm, const drmModeModeInfo *mode ) g_bRotated = false; g_nOutputWidth = mode->hdisplay; g_nOutputHeight = mode->vdisplay; @@ -3281,7 +553,7 @@ index 856b03fc3747..e1547f4a1a9b 100644 break; case GAMESCOPE_PANEL_ORIENTATION_90: case GAMESCOPE_PANEL_ORIENTATION_270: -@@ -3327,6 +3353,11 @@ namespace gamescope +@@ -3449,6 +3475,11 @@ namespace gamescope bNeedsFullComposite |= !!(g_uCompositeDebug & CompositeDebugFlag::Heatmap); @@ -3293,7 +565,7 @@ index 856b03fc3747..e1547f4a1a9b 100644 bool bDoComposite = true; if ( !bNeedsFullComposite && !bWantsPartialComposite ) { -@@ -3417,7 +3448,7 @@ namespace gamescope +@@ -3539,7 +3570,7 @@ namespace gamescope if ( bDefer && !!( g_uCompositeDebug & CompositeDebugFlag::Markers ) ) g_uCompositeDebug |= CompositeDebugFlag::Markers_Partial; @@ -3303,10 +575,10 @@ index 856b03fc3747..e1547f4a1a9b 100644 m_bWasCompositing = true; diff --git a/src/main.cpp b/src/main.cpp -index 1443f49b51e9..c96b8f0ac39e 100644 +index d63b1fe50cc6..cfd4cc11d179 100644 --- a/src/main.cpp +++ b/src/main.cpp -@@ -127,6 +127,7 @@ const struct option *gamescope_options = (struct option[]){ +@@ -131,6 +131,7 @@ const struct option *gamescope_options = (struct option[]){ { "composite-debug", no_argument, nullptr, 0 }, { "disable-xres", no_argument, nullptr, 'x' }, { "fade-out-duration", required_argument, nullptr, 0 }, @@ -3314,7 +586,7 @@ index 1443f49b51e9..c96b8f0ac39e 100644 { "force-orientation", required_argument, nullptr, 0 }, { "force-windows-fullscreen", no_argument, nullptr, 0 }, { "custom-refresh-rates", required_argument, nullptr, 0 }, -@@ -190,6 +191,7 @@ const char usage[] = +@@ -194,6 +195,7 @@ const char usage[] = " -e, --steam enable Steam integration\n" " --xwayland-count create N xwayland servers\n" " --prefer-vk-device prefer Vulkan device for compositing (ex: 1002:7300)\n" @@ -3322,7 +594,7 @@ index 1443f49b51e9..c96b8f0ac39e 100644 " --force-orientation rotate the internal display (left, right, normal, upsidedown)\n" " --force-windows-fullscreen force windows inside of gamescope to be the size of the nested display (fullscreen)\n" " --cursor-scale-height if specified, sets a base output height to linearly scale the cursor against.\n" -@@ -348,6 +350,9 @@ static gamescope::GamescopeModeGeneration parse_gamescope_mode_generation( const +@@ -355,6 +357,9 @@ static gamescope::GamescopeModeGeneration parse_gamescope_mode_generation( const } } @@ -3332,7 +604,7 @@ index 1443f49b51e9..c96b8f0ac39e 100644 GamescopePanelOrientation g_DesiredInternalOrientation = GAMESCOPE_PANEL_ORIENTATION_AUTO; static GamescopePanelOrientation force_orientation(const char *str) { -@@ -803,6 +808,8 @@ int main(int argc, char **argv) +@@ -812,6 +817,8 @@ int main(int argc, char **argv) g_eGamescopeModeGeneration = parse_gamescope_mode_generation( optarg ); } else if (strcmp(opt_name, "force-orientation") == 0) { g_DesiredInternalOrientation = force_orientation( optarg ); @@ -3355,10 +627,10 @@ index 390c04a63ecd..e7b857d44b0d 100644 extern bool g_bFullscreen; diff --git a/src/meson.build b/src/meson.build -index 842768ce7ce4..0a0e958ba313 100644 +index a3dfdabd7366..36c073ec214e 100644 --- a/src/meson.build +++ b/src/meson.build -@@ -73,6 +73,7 @@ shader_src = [ +@@ -70,6 +70,7 @@ shader_src = [ 'shaders/cs_nis.comp', 'shaders/cs_nis_fp16.comp', 'shaders/cs_rgb_to_nv12.comp', @@ -3367,7 +639,7 @@ index 842768ce7ce4..0a0e958ba313 100644 spirv_shaders = glsl_generator.process(shader_src) diff --git a/src/rendervulkan.cpp b/src/rendervulkan.cpp -index b8412b8fdf2f..d833d0093830 100644 +index f79d26e0c139..b19f9bf101b4 100644 --- a/src/rendervulkan.cpp +++ b/src/rendervulkan.cpp @@ -48,6 +48,7 @@ @@ -3378,7 +650,7 @@ index b8412b8fdf2f..d833d0093830 100644 #define A_CPU #include "shaders/ffx_a.h" -@@ -904,6 +905,7 @@ bool CVulkanDevice::createShaders() +@@ -923,6 +924,7 @@ bool CVulkanDevice::createShaders() SHADER(NIS, cs_nis); } SHADER(RGB_TO_NV12, cs_rgb_to_nv12); @@ -3386,7 +658,7 @@ index b8412b8fdf2f..d833d0093830 100644 #undef SHADER for (uint32_t i = 0; i < shaderInfos.size(); i++) -@@ -1134,6 +1136,7 @@ void CVulkanDevice::compileAllPipelines() +@@ -1153,6 +1155,7 @@ void CVulkanDevice::compileAllPipelines() SHADER(EASU, 1, 1, 1); SHADER(NIS, 1, 1, 1); SHADER(RGB_TO_NV12, 1, 1, 1); @@ -3394,7 +666,7 @@ index b8412b8fdf2f..d833d0093830 100644 #undef SHADER for (auto& info : pipelineInfos) { -@@ -3229,8 +3232,16 @@ static bool vulkan_make_output_images( VulkanOutput_t *pOutput ) +@@ -3249,8 +3252,16 @@ static bool vulkan_make_output_images( VulkanOutput_t *pOutput ) uint32_t uDRMFormat = pOutput->uOutputFormat; @@ -3412,7 +684,7 @@ index b8412b8fdf2f..d833d0093830 100644 if ( bSuccess != true ) { vk_log.errorf( "failed to allocate buffer for KMS" ); -@@ -3238,7 +3249,7 @@ static bool vulkan_make_output_images( VulkanOutput_t *pOutput ) +@@ -3258,7 +3269,7 @@ static bool vulkan_make_output_images( VulkanOutput_t *pOutput ) } pOutput->outputImages[1] = new CVulkanTexture(); @@ -3421,7 +693,7 @@ index b8412b8fdf2f..d833d0093830 100644 if ( bSuccess != true ) { vk_log.errorf( "failed to allocate buffer for KMS" ); -@@ -3246,7 +3257,7 @@ static bool vulkan_make_output_images( VulkanOutput_t *pOutput ) +@@ -3266,7 +3277,7 @@ static bool vulkan_make_output_images( VulkanOutput_t *pOutput ) } pOutput->outputImages[2] = new CVulkanTexture(); @@ -3430,7 +702,7 @@ index b8412b8fdf2f..d833d0093830 100644 if ( bSuccess != true ) { vk_log.errorf( "failed to allocate buffer for KMS" ); -@@ -3261,7 +3272,7 @@ static bool vulkan_make_output_images( VulkanOutput_t *pOutput ) +@@ -3281,7 +3292,7 @@ static bool vulkan_make_output_images( VulkanOutput_t *pOutput ) uint32_t uPartialDRMFormat = pOutput->uOutputFormatOverlay; pOutput->outputImagesPartialOverlay[0] = new CVulkanTexture(); @@ -3439,7 +711,7 @@ index b8412b8fdf2f..d833d0093830 100644 if ( bSuccess != true ) { vk_log.errorf( "failed to allocate buffer for KMS" ); -@@ -3269,7 +3280,7 @@ static bool vulkan_make_output_images( VulkanOutput_t *pOutput ) +@@ -3289,7 +3300,7 @@ static bool vulkan_make_output_images( VulkanOutput_t *pOutput ) } pOutput->outputImagesPartialOverlay[1] = new CVulkanTexture(); @@ -3448,7 +720,7 @@ index b8412b8fdf2f..d833d0093830 100644 if ( bSuccess != true ) { vk_log.errorf( "failed to allocate buffer for KMS" ); -@@ -3277,7 +3288,7 @@ static bool vulkan_make_output_images( VulkanOutput_t *pOutput ) +@@ -3297,7 +3308,7 @@ static bool vulkan_make_output_images( VulkanOutput_t *pOutput ) } pOutput->outputImagesPartialOverlay[2] = new CVulkanTexture(); @@ -3457,7 +729,7 @@ index b8412b8fdf2f..d833d0093830 100644 if ( bSuccess != true ) { vk_log.errorf( "failed to allocate buffer for KMS" ); -@@ -3407,6 +3418,28 @@ static void update_tmp_images( uint32_t width, uint32_t height ) +@@ -3427,6 +3438,28 @@ static void update_tmp_images( uint32_t width, uint32_t height ) } } @@ -3486,7 +758,7 @@ index b8412b8fdf2f..d833d0093830 100644 static bool init_nis_data() { -@@ -3873,7 +3906,7 @@ extern uint32_t g_reshade_technique_idx; +@@ -3903,7 +3936,7 @@ extern uint32_t g_reshade_technique_idx; ReshadeEffectPipeline *g_pLastReshadeEffect = nullptr; @@ -3495,7 +767,7 @@ index b8412b8fdf2f..d833d0093830 100644 { EOTF outputTF = frameInfo->outputEncodingEOTF; if (!frameInfo->applyOutputColorMgmt) -@@ -3948,7 +3981,15 @@ std::optional vulkan_composite( struct FrameInfo_t *frameInfo, gamesco +@@ -3978,7 +4011,15 @@ std::optional vulkan_composite( struct FrameInfo_t *frameInfo, gamesco cmdBuffer->setTextureSrgb(0, true); cmdBuffer->setSamplerUnnormalized(0, false); cmdBuffer->setSamplerNearest(0, false); @@ -3512,7 +784,7 @@ index b8412b8fdf2f..d833d0093830 100644 cmdBuffer->uploadConstants(frameInfo, g_upscaleFilterSharpness / 10.0f); cmdBuffer->dispatch(div_roundup(currentOutputWidth, pixelsPerGroup), div_roundup(currentOutputHeight, pixelsPerGroup)); -@@ -3991,7 +4032,15 @@ std::optional vulkan_composite( struct FrameInfo_t *frameInfo, gamesco +@@ -4021,7 +4062,15 @@ std::optional vulkan_composite( struct FrameInfo_t *frameInfo, gamesco cmdBuffer->bindPipeline( g_device.pipeline(SHADER_TYPE_BLIT, nisFrameInfo.layerCount, nisFrameInfo.ycbcrMask(), 0u, nisFrameInfo.colorspaceMask(), outputTF )); bind_all_layers(cmdBuffer.get(), &nisFrameInfo); @@ -3529,7 +801,7 @@ index b8412b8fdf2f..d833d0093830 100644 cmdBuffer->uploadConstants(&nisFrameInfo); int pixelsPerGroup = 8; -@@ -4029,7 +4078,15 @@ std::optional vulkan_composite( struct FrameInfo_t *frameInfo, gamesco +@@ -4059,7 +4108,15 @@ std::optional vulkan_composite( struct FrameInfo_t *frameInfo, gamesco type = frameInfo->blurLayer0 == BLUR_MODE_COND ? SHADER_TYPE_BLUR_COND : SHADER_TYPE_BLUR; cmdBuffer->bindPipeline(g_device.pipeline(type, frameInfo->layerCount, frameInfo->ycbcrMask(), blur_layer_count, frameInfo->colorspaceMask(), outputTF )); bind_all_layers(cmdBuffer.get(), frameInfo); @@ -3546,7 +818,7 @@ index b8412b8fdf2f..d833d0093830 100644 cmdBuffer->bindTexture(VKR_BLUR_EXTRA_SLOT, g_output.tmpOutput); cmdBuffer->setTextureSrgb(VKR_BLUR_EXTRA_SLOT, !useSrgbView); // Inverted because it chooses whether to view as linear (sRGB view) or sRGB (raw view). It's horrible. I need to change it. cmdBuffer->setSamplerUnnormalized(VKR_BLUR_EXTRA_SLOT, true); -@@ -4039,14 +4096,51 @@ std::optional vulkan_composite( struct FrameInfo_t *frameInfo, gamesco +@@ -4069,14 +4126,51 @@ std::optional vulkan_composite( struct FrameInfo_t *frameInfo, gamesco } else { @@ -3605,10 +877,10 @@ index b8412b8fdf2f..d833d0093830 100644 if ( pPipewireTexture != nullptr ) diff --git a/src/rendervulkan.hpp b/src/rendervulkan.hpp -index 0f8cba8516c0..911ca7ea208c 100644 +index 63cc6029ac5f..93a4a6027f55 100644 --- a/src/rendervulkan.hpp +++ b/src/rendervulkan.hpp -@@ -396,7 +396,7 @@ gamescope::OwningRc vulkan_create_texture_from_dmabuf( struct wl +@@ -408,7 +408,7 @@ gamescope::OwningRc vulkan_create_texture_from_dmabuf( struct wl gamescope::OwningRc vulkan_create_texture_from_bits( uint32_t width, uint32_t height, uint32_t contentWidth, uint32_t contentHeight, uint32_t drmFormat, CVulkanTexture::createFlags texCreateFlags, void *bits ); gamescope::OwningRc vulkan_create_texture_from_wlr_buffer( struct wlr_buffer *buf, gamescope::OwningRc pBackendFb ); @@ -3617,7 +889,7 @@ index 0f8cba8516c0..911ca7ea208c 100644 void vulkan_wait( uint64_t ulSeqNo, bool bReset ); gamescope::Rc vulkan_get_last_output_image( bool partial, bool defer ); gamescope::Rc vulkan_acquire_screenshot_texture(uint32_t width, uint32_t height, bool exportable, uint32_t drmFormat, EStreamColorspace colorspace = k_EStreamColorspace_Unknown); -@@ -533,6 +533,9 @@ struct VulkanOutput_t +@@ -545,6 +545,9 @@ struct VulkanOutput_t // NIS gamescope::OwningRc nisScalerImage; gamescope::OwningRc nisUsmImage; @@ -3627,7 +899,7 @@ index 0f8cba8516c0..911ca7ea208c 100644 }; -@@ -545,6 +548,7 @@ enum ShaderType { +@@ -557,6 +560,7 @@ enum ShaderType { SHADER_TYPE_RCAS, SHADER_TYPE_NIS, SHADER_TYPE_RGB_TO_NV12, @@ -3695,10 +967,10 @@ index 000000000000..1a47fd505748 + imageStore(dst, rotatedCoord, outputValue); +} diff --git a/src/wlserver.cpp b/src/wlserver.cpp -index 0b99c498e55d..d3ae7beb7b1f 100644 +index 4d6e8de55ba4..a694b5245a97 100644 --- a/src/wlserver.cpp +++ b/src/wlserver.cpp -@@ -2579,6 +2579,11 @@ static void apply_touchscreen_orientation(double *x, double *y ) +@@ -2793,6 +2793,11 @@ static void apply_touchscreen_orientation(double *x, double *y ) break; } @@ -3711,85 +983,7 @@ index 0b99c498e55d..d3ae7beb7b1f 100644 *y = ty; } -- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Antheas Kapenekakis -Date: Thu, 13 Mar 2025 19:04:51 +0100 -Subject: fix(hdr): remove PQ from internal panels and allow disabling for - externals - -New steam update forces HDR mode. The cursed patching gamescope does is -not supported for all displays, especially internal ones. So disable by -default on internal panels and allow disabling on externals. ---- - src/Backends/DRMBackend.cpp | 2 +- - src/main.cpp | 1 + - src/steamcompmgr.cpp | 3 +++ - src/steamcompmgr.hpp | 1 + - 4 files changed, 6 insertions(+), 1 deletion(-) - -diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp -index e1547f4a1a9b..d7107325ad59 100644 ---- a/src/Backends/DRMBackend.cpp -+++ b/src/Backends/DRMBackend.cpp -@@ -2367,7 +2367,7 @@ namespace gamescope - } - } - -- if ( pColorimetry && pColorimetry->bt2020_rgb && -+ if ( g_bHDRPqEnable && GetScreenType() != GAMESCOPE_SCREEN_TYPE_INTERNAL && pColorimetry && pColorimetry->bt2020_rgb && - pHDRStaticMetadata && pHDRStaticMetadata->eotfs && pHDRStaticMetadata->eotfs->pq ) - { - m_Mutable.HDR.bExposeHDRSupport = true; -diff --git a/src/main.cpp b/src/main.cpp -index c96b8f0ac39e..58230054ce53 100644 ---- a/src/main.cpp -+++ b/src/main.cpp -@@ -199,6 +199,7 @@ const char usage[] = - " If this is not set, and there is a HDR client, it will be tonemapped SDR.\n" - " --sdr-gamut-wideness Set the 'wideness' of the gamut for SDR comment. 0 - 1.\n" - " --hdr-sdr-content-nits set the luminance of SDR content in nits. Default: 400 nits.\n" -+ " --hdr-pq-disable disable HDR metadata detection for PQ EOTFs. IE disable HDR for external panels but not ones added through config. \n" - " --hdr-itm-enabled enable SDR->HDR inverse tone mapping. only works for SDR input.\n" - " --hdr-itm-sdr-nits set the luminance of SDR content in nits used as the input for the inverse tone mapping process.\n" - " Default: 100 nits, Max: 1000 nits\n" -diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp -index fcdc9ac1559f..86df7eaf681f 100644 ---- a/src/steamcompmgr.cpp -+++ b/src/steamcompmgr.cpp -@@ -363,6 +363,7 @@ bool g_bVRRInUse_CachedValue = false; - bool g_bSupportsHDR_CachedValue = false; - bool g_bForceHDR10OutputDebug = false; - gamescope::ConVar cv_hdr_enabled{ "hdr_enabled", false, "Whether or not HDR is enabled if it is available." }; -+bool g_bHDRPqEnable = true; - bool g_bHDRItmEnable = false; - int g_nCurrentRefreshRate_CachedValue = 0; - -@@ -7548,6 +7549,8 @@ steamcompmgr_main(int argc, char **argv) - g_bForceHDRSupportDebug = true; - } else if (strcmp(opt_name, "hdr-debug-force-output") == 0) { - g_bForceHDR10OutputDebug = true; -+ } else if (strcmp(opt_name, "hdr-pq-disabled") == 0 || strcmp(opt_name, "hdr-pq-disable") == 0) { -+ g_bHDRPqEnable = false; - } else if (strcmp(opt_name, "hdr-itm-enabled") == 0 || strcmp(opt_name, "hdr-itm-enable") == 0) { - g_bHDRItmEnable = true; - } else if (strcmp(opt_name, "sdr-gamut-wideness") == 0) { -diff --git a/src/steamcompmgr.hpp b/src/steamcompmgr.hpp -index 9f384c461ca4..0df01c0ed0e3 100644 ---- a/src/steamcompmgr.hpp -+++ b/src/steamcompmgr.hpp -@@ -38,6 +38,7 @@ static const uint32_t g_zposOverlay = 3; - static const uint32_t g_zposCursor = 4; - static const uint32_t g_zposMuraCorrection = 5; - -+extern bool g_bHDRPqEnable; - extern bool g_bHDRItmEnable; - extern bool g_bForceHDRSupportDebug; - --- -2.50.1 +2.51.0 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 @@ -3805,7 +999,7 @@ see: https://github.com/ValveSoftware/gamescope/pull/1671 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/layer/VkLayer_FROG_gamescope_wsi.cpp b/layer/VkLayer_FROG_gamescope_wsi.cpp -index 5bd1408bf780..495bbc070ff8 100644 +index af0c2009930b..263cbc37bd88 100644 --- a/layer/VkLayer_FROG_gamescope_wsi.cpp +++ b/layer/VkLayer_FROG_gamescope_wsi.cpp @@ -183,6 +183,16 @@ namespace GamescopeWSILayer { @@ -3825,7 +1019,7 @@ index 5bd1408bf780..495bbc070ff8 100644 // Taken from Mesa, licensed under MIT. // // No real reason to rewrite this code, -@@ -588,7 +598,11 @@ namespace GamescopeWSILayer { +@@ -589,7 +599,11 @@ namespace GamescopeWSILayer { createInfo.ppEnabledExtensionNames = enabledExts.data(); setenv("vk_xwayland_wait_ready", "false", 0); @@ -3838,7 +1032,7 @@ index 5bd1408bf780..495bbc070ff8 100644 VkResult result = pfnCreateInstanceProc(&createInfo, pAllocator, pInstance); if (result != VK_SUCCESS) -@@ -893,6 +907,10 @@ namespace GamescopeWSILayer { +@@ -899,6 +913,10 @@ namespace GamescopeWSILayer { const vkroots::VkInstanceDispatch* pDispatch, VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) { @@ -3850,7 +1044,7 @@ index 5bd1408bf780..495bbc070ff8 100644 } -- -2.50.1 +2.51.0 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 @@ -3928,7 +1122,7 @@ index 000000000000..891f1ea9ca6f +debug("Registered Lenovo Legion Go S LCD as a known display") \ No newline at end of file -- -2.50.1 +2.51.0 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 @@ -3944,10 +1138,10 @@ Subject: feat(display): consider vporch to avoid timing issues 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp -index d7107325ad59..bcfc56dcbe20 100644 +index a099185e7cdc..d09030e0cf5e 100644 --- a/src/Backends/DRMBackend.cpp +++ b/src/Backends/DRMBackend.cpp -@@ -114,6 +114,11 @@ namespace gamescope +@@ -213,6 +213,11 @@ namespace gamescope return nRefresh; } @@ -3959,7 +1153,7 @@ index d7107325ad59..bcfc56dcbe20 100644 template using CAutoDeletePtr = std::unique_ptr; -@@ -3077,6 +3082,9 @@ bool drm_set_mode( struct drm_t *drm, const drmModeModeInfo *mode ) +@@ -3194,6 +3199,9 @@ bool drm_set_mode( struct drm_t *drm, const drmModeModeInfo *mode ) g_nOutputRefresh = gamescope::GetModeRefresh( mode ); g_nDynamicRefreshHz = 0; @@ -3970,10 +1164,10 @@ index d7107325ad59..bcfc56dcbe20 100644 switch ( drm->pConnector->GetCurrentOrientation() ) diff --git a/src/main.cpp b/src/main.cpp -index 58230054ce53..b11e67c0c9b7 100644 +index cfd4cc11d179..0d88e3a2cded 100644 --- a/src/main.cpp +++ b/src/main.cpp -@@ -285,6 +285,7 @@ int g_nNestedDisplayIndex = 0; +@@ -291,6 +291,7 @@ int g_nNestedDisplayIndex = 0; uint32_t g_nOutputWidth = 0; uint32_t g_nOutputHeight = 0; int g_nOutputRefresh = 0; @@ -3994,7 +1188,7 @@ index e7b857d44b0d..e6f8ff133689 100644 extern bool g_bForceInternal; extern bool g_bUseRotationShader; diff --git a/src/vblankmanager.cpp b/src/vblankmanager.cpp -index 2fd0ec45ef81..ceb7829127c3 100644 +index f036d000a8e2..e388374c98ba 100644 --- a/src/vblankmanager.cpp +++ b/src/vblankmanager.cpp @@ -95,8 +95,6 @@ namespace gamescope @@ -4018,70 +1212,7 @@ index 2fd0ec45ef81..ceb7829127c3 100644 const uint64_t ulDecayAlpha = m_ulVBlankRateOfDecayPercentage; // eg. 980 = 98% -- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Antheas Kapenekakis -Date: Sun, 4 May 2025 22:45:14 +0200 -Subject: Revert "Force wrap file usage for stb and glm dependencies" - -This reverts commit b01717437797ee97a6a9810ddfc69153b3861df1. ---- - src/meson.build | 7 ++----- - 1 file changed, 2 insertions(+), 5 deletions(-) - -diff --git a/src/meson.build b/src/meson.build -index 0a0e958ba313..8a3a7237c787 100644 ---- a/src/meson.build -+++ b/src/meson.build -@@ -19,14 +19,11 @@ xkbcommon = dependency('xkbcommon') - thread_dep = dependency('threads') - cap_dep = dependency('libcap', required: get_option('rt_cap')) - epoll_dep = dependency('epoll-shim', required: false) -+glm_dep = dependency('glm') - sdl2_dep = dependency('SDL2', required: get_option('sdl2_backend')) -+stb_dep = dependency('stb') - avif_dep = dependency('libavif', version: '>=1.0.0', required: get_option('avif_screenshots')) - --glm_proj = subproject('glm') --glm_dep = glm_proj.get_variable('glm_dep') --stb_proj = subproject('stb') --stb_dep = stb_proj.get_variable('stb_dep') -- - wlroots_dep = dependency( - 'wlroots', - version: ['>= 0.18.0', '< 0.19.0'], --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Antheas Kapenekakis -Date: Sat, 17 May 2025 03:06:20 +0200 -Subject: fix: prevent external overlays from pulling focus - ---- - src/steamcompmgr.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp -index 86df7eaf681f..be69ce4b391f 100644 ---- a/src/steamcompmgr.cpp -+++ b/src/steamcompmgr.cpp -@@ -6132,8 +6132,8 @@ bool handle_done_commit( steamcompmgr_win_t *w, xwayland_ctx_t *ctx, uint64_t co - hasRepaintNonBasePlane = true; - } - -- // If this is an external overlay, repaint -- if ( w == global_focus.externalOverlayWindow && w->opacity != TRANSLUCENT ) -+ // External overlays, e.g., mangohud, should not be able to repaint when VRR is on -+ if ( !GetBackend()->IsVRRActive() && w == global_focus.externalOverlayWindow && w->opacity != TRANSLUCENT ) - { - hasRepaintNonBasePlane = true; - } --- -2.50.1 +2.51.0 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 @@ -4192,7 +1323,161 @@ index 32f776c17f3d..057850f374f8 100644 +debug("Registered Lenovo Legion Go S LCD as a known display") \ No newline at end of file -- -2.50.1 +2.51.0 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Antheas Kapenekakis +Date: Fri, 29 Aug 2025 16:45:39 +0200 +Subject: feat: add DPMS support through an Atom + +--- + src/Backends/DRMBackend.cpp | 15 ++++++++++++++- + src/rendervulkan.hpp | 2 ++ + src/steamcompmgr.cpp | 18 +++++++++++++++--- + src/xwayland_ctx.hpp | 1 + + 4 files changed, 32 insertions(+), 4 deletions(-) + +diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp +index d09030e0cf5e..2861f30aaf66 100644 +--- a/src/Backends/DRMBackend.cpp ++++ b/src/Backends/DRMBackend.cpp +@@ -2827,6 +2827,9 @@ int drm_prepare( struct drm_t *drm, bool async, const struct FrameInfo_t *frameI + drm->needs_modeset = true; + } + ++ if (drm->pCRTC && drm->pCRTC->GetProperties().ACTIVE->GetCurrentValue() != !frameInfo->dpms) ++ drm->needs_modeset = true; ++ + drm_colorspace uColorimetry = DRM_MODE_COLORIMETRY_DEFAULT; + + const bool bWantsHDR10 = g_bOutputHDREnabled && frameInfo->outputEncodingEOTF == EOTF_PQ; +@@ -2894,6 +2897,9 @@ int drm_prepare( struct drm_t *drm, bool async, const struct FrameInfo_t *frameI + needs_modeset = true; + } + ++ if ( frameInfo->dpms ) ++ bSleep = true; ++ + if ( !bSleep ) + { + if ( drm->pCRTC != nullptr ) +@@ -2973,7 +2979,13 @@ int drm_prepare( struct drm_t *drm, bool async, const struct FrameInfo_t *frameI + + if ( drm->pCRTC && !bSleep ) + { +- drm->pCRTC->GetProperties().ACTIVE->SetPendingValue( drm->req, 1u, true ); ++ if ( frameInfo->dpms ) { ++ // We can't disable a CRTC if it's already disabled ++ if (drm->pCRTC->GetProperties().ACTIVE->GetCurrentValue() != 0) ++ drm->pCRTC->GetProperties().ACTIVE->SetPendingValue(drm->req, 0, true); ++ } ++ else ++ drm->pCRTC->GetProperties().ACTIVE->SetPendingValue( drm->req, 1u, true ); + drm->pCRTC->GetProperties().MODE_ID->SetPendingValue( drm->req, drm->pending.mode_id ? drm->pending.mode_id->GetBlobValue() : 0lu, true ); + + if ( drm->pCRTC->GetProperties().VRR_ENABLED ) +@@ -3594,6 +3606,7 @@ namespace gamescope + + FrameInfo_t presentCompFrameInfo = {}; + presentCompFrameInfo.allowVRR = pFrameInfo->allowVRR; ++ presentCompFrameInfo.dpms = pFrameInfo->dpms; + presentCompFrameInfo.outputEncodingEOTF = pFrameInfo->outputEncodingEOTF; + + if ( bNeedsFullComposite ) +diff --git a/src/rendervulkan.hpp b/src/rendervulkan.hpp +index 93a4a6027f55..0833fc46ffd7 100644 +--- a/src/rendervulkan.hpp ++++ b/src/rendervulkan.hpp +@@ -292,6 +292,8 @@ struct FrameInfo_t + bool applyOutputColorMgmt; // drm only + EOTF outputEncodingEOTF; + ++ bool dpms; ++ + int layerCount; + struct Layer_t + { +diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp +index 07e45b19fc61..f25f810f9387 100644 +--- a/src/steamcompmgr.cpp ++++ b/src/steamcompmgr.cpp +@@ -174,6 +174,8 @@ bool g_bSteamIsActiveWindow = false; + bool g_bForceInternal = false; + bool b_bForceFrameLimit = false; + bool g_bRefreshHalveEnable = false; ++bool g_bDPMS = false; ++bool g_bDPMS_set = false; + + namespace gamescope + { +@@ -2421,7 +2423,7 @@ gamescope::ConVar cv_paint_cursor_plane{ "paint_cursor_plane", true }; + gamescope::ConVar cv_paint_mura_plane{ "paint_mura_plane", true }; + + static void +-paint_all( global_focus_t *pFocus, bool async ) ++paint_all(global_focus_t *pFocus, bool async, bool dpms) + { + if ( !pFocus ) + return; +@@ -2479,6 +2481,7 @@ paint_all( global_focus_t *pFocus, bool async ) + frameInfo.outputEncodingEOTF = g_ColorMgmt.pending.outputEncodingEOTF; + frameInfo.allowVRR = cv_adaptive_sync; + frameInfo.bFadingOut = fadingOut; ++ frameInfo.dpms = dpms; + + // If the window we'd paint as the base layer is the streaming client, + // find the video underlay and put it up first in the scenegraph +@@ -6234,6 +6237,10 @@ handle_property_notify(xwayland_ctx_t *ctx, XPropertyEvent *ev) + { + g_bRefreshHalveEnable = !!get_prop( ctx, ctx->root, ctx->atoms.gamescopeFrameHalveAtom, 0 ); + } ++ if (ev->atom == ctx->atoms.gamescopeDPMS) ++ { ++ g_bDPMS = !!get_prop(ctx, ctx->root, ctx->atoms.gamescopeDPMS, 0); ++ } + } + + static int +@@ -7470,6 +7477,7 @@ void init_xwayland_ctx(uint32_t serverId, gamescope_xwayland_server_t *xwayland_ + ctx->atoms.targets = XInternAtom(ctx->dpy, "TARGETS", false); + + ctx->atoms.gamescopeFrameHalveAtom = XInternAtom( ctx->dpy, "GAMESCOPE_STEAMUI_HALFHZ", false );; ++ ctx->atoms.gamescopeDPMS = XInternAtom(ctx->dpy, "GAMESCOPE_DPMS", false); + + ctx->root_width = DisplayWidth(ctx->dpy, ctx->scr); + ctx->root_height = DisplayHeight(ctx->dpy, ctx->scr); +@@ -8611,10 +8619,14 @@ steamcompmgr_main(int argc, char **argv) + bShouldPaint = false; + } + ++ if ( g_bDPMS != g_bDPMS_set && vblank ) ++ bShouldPaint = true; ++ + if ( bShouldPaint ) + { +- paint_all( pPaintFocus, eFlipType == FlipType::Async ); +- ++ paint_all( pPaintFocus, eFlipType == FlipType::Async, g_bDPMS ); ++ ++ g_bDPMS_set = g_bDPMS; + bPainted = true; + } + } +diff --git a/src/xwayland_ctx.hpp b/src/xwayland_ctx.hpp +index e4eec9fa0c48..2347cbb3340c 100644 +--- a/src/xwayland_ctx.hpp ++++ b/src/xwayland_ctx.hpp +@@ -248,6 +248,7 @@ struct xwayland_ctx_t final : public gamescope::IWaitable + Atom targets; + + Atom gamescopeFrameHalveAtom; ++ Atom gamescopeDPMS; + } atoms; + + bool HasQueuedEvents(); +-- +2.51.0 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 @@ -4233,205 +1518,533 @@ index ec7d4e430ee8..17ba783f809b 100644 path = thirdparty/SPIRV-Headers url = https://github.com/KhronosGroup/SPIRV-Headers/ -- -2.50.1 +2.51.0 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Antheas Kapenekakis -Date: Sun, 29 Jun 2025 13:17:14 +0200 -Subject: switch to bazzite fork for wlroots +Date: Fri, 29 Aug 2025 15:31:34 +0200 +Subject: fix: drain timer fds to avoid epoll_wait returning constantly +Currently, if the VBlank or VRR timers expire without being rescheduled, +their FDs remain readable, causing epoll_wait to return instantly.|Drain +the FDs in the OnPollIn handlers to prevent this. --- - .gitmodules | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + src/waitable.h | 6 ++++++ + 1 file changed, 6 insertions(+) -diff --git a/.gitmodules b/.gitmodules -index 17ba783f809b..2ae6cd101faf 100644 ---- a/.gitmodules -+++ b/.gitmodules -@@ -1,6 +1,6 @@ - [submodule "subprojects/wlroots"] - path = subprojects/wlroots -- url = https://github.com/misyltoad/wlroots.git -+ url = https://github.com/bazzite-org/wlroots.git - [submodule "subprojects/libliftoff"] - path = subprojects/libliftoff - url = https://gitlab.freedesktop.org/emersion/libliftoff.git +diff --git a/src/waitable.h b/src/waitable.h +index 30edf8f52deb..36ac61ee7233 100644 +--- a/src/waitable.h ++++ b/src/waitable.h +@@ -182,6 +182,11 @@ namespace gamescope + ArmTimer( 0ul, false ); + } + ++ void OnPollIn() ++ { ++ IWaitable::Drain(m_nFD); ++ } ++ + int GetFD() + { + return m_nFD; +@@ -200,6 +205,7 @@ namespace gamescope + + void OnPollIn() final + { ++ ITimerWaitable::OnPollIn(); + m_fnPollFunc(); + } + private: -- -2.50.1 +2.51.0 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Matthew Schwartz -Date: Sun, 22 Jun 2025 10:39:19 -0700 -Subject: steamcompmgr: track FSR state with preemptive upscaling +From: Antheas Kapenekakis +Date: Sat, 30 Aug 2025 15:12:39 +0200 +Subject: fix(intel): allow night mode and color adjustment via compositing -g_bFSRActive was only being applied to the first frame of preemptive -upscaling, which meant that the FSR badge would quickly flicker from on -to off when preemptive upscaling was active. - -To account for this, track the state of preemptive upscaling and use -it to activate g_bFSRActive when applicable. --- - src/steamcompmgr.cpp | 3 +++ - 1 file changed, 3 insertions(+) + src/Backends/DRMBackend.cpp | 11 +++++++++++ + 1 file changed, 11 insertions(+) +diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp +index 2861f30aaf66..3c4e5907b2a9 100644 +--- a/src/Backends/DRMBackend.cpp ++++ b/src/Backends/DRMBackend.cpp +@@ -3481,6 +3481,17 @@ namespace gamescope + bNeedsFullComposite |= pFrameInfo->bFadingOut; + bNeedsFullComposite |= !g_reshade_effect.empty(); + ++ if ( !SupportsColorManagement() ) { ++ // Fuzzy match default values to see if we need to composite ++ bNeedsFullComposite |= g_ColorMgmt.pending.nightmode.amount != 0.0f; ++ bNeedsFullComposite |= g_ColorMgmt.pending.outputVirtualWhite.x > 0 && ++ abs(g_ColorMgmt.pending.outputVirtualWhite.x - 0.3127f) > 0.001f; ++ bNeedsFullComposite |= g_ColorMgmt.pending.outputVirtualWhite.y > 0 && ++ abs(g_ColorMgmt.pending.outputVirtualWhite.y - 0.3290f) > 0.001f; ++ bNeedsFullComposite |= g_ColorMgmt.pending.sdrGamutWideness >= 0 && ++ abs(g_ColorMgmt.pending.sdrGamutWideness - 0.5f) > 0.02f; ++ } ++ + if ( g_bOutputHDREnabled ) + { + bNeedsFullComposite |= g_bHDRItmEnable; +-- +2.51.0 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Antheas Kapenekakis +Date: Sat, 30 Aug 2025 15:32:00 +0200 +Subject: fix(hdr): disable PQ on handheld internal displays + +For some reason, the PQ transfer function does not work on current +handhelds. So use gamma 22 instead. This allows us to skip creating +configs and read the HDR metadata from the displays. +--- + src/Backends/DRMBackend.cpp | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp +index 3c4e5907b2a9..83da1bfe231b 100644 +--- a/src/Backends/DRMBackend.cpp ++++ b/src/Backends/DRMBackend.cpp +@@ -2465,7 +2465,13 @@ namespace gamescope + pHDRStaticMetadata && pHDRStaticMetadata->eotfs && pHDRStaticMetadata->eotfs->pq ) + { + m_Mutable.HDR.bExposeHDRSupport = true; +- m_Mutable.HDR.eOutputEncodingEOTF = EOTF_PQ; ++ if (GetScreenType() == GAMESCOPE_SCREEN_TYPE_INTERNAL) ++ // Current handheld internal displays have issues ++ // with PQ, e.g., Ayaneo 3, Steam Deck etc. ++ // Use Gamma 2.2 as the safest option for now. ++ m_Mutable.HDR.eOutputEncodingEOTF = EOTF_Gamma22; ++ else ++ m_Mutable.HDR.eOutputEncodingEOTF = EOTF_PQ; + m_Mutable.HDR.uMaxContentLightLevel = + pHDRStaticMetadata->desired_content_max_luminance + ? nits_to_u16( pHDRStaticMetadata->desired_content_max_luminance ) +-- +2.51.0 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Antheas Kapenekakis +Date: Fri, 29 Aug 2025 17:17:06 +0200 +Subject: chore: use system glm, stb + +--- + meson.build | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/meson.build b/meson.build +index 5e5bd4cdc7c4..802e4a052bcd 100644 +--- a/meson.build ++++ b/meson.build +@@ -50,10 +50,8 @@ dep_x11 = dependency('x11') + dep_wayland = dependency('wayland-client') + vulkan_dep = dependency('vulkan') + +-glm_proj = subproject('glm') +-glm_dep = glm_proj.get_variable('glm_dep') +-stb_proj = subproject('stb') +-stb_dep = stb_proj.get_variable('stb_dep') ++glm_dep = dependency('glm') ++stb_dep = dependency('stb') + + if get_option('enable_openvr_support') + openvr_dep = dependency('openvr', version: '>= 2.7', required : false) +-- +2.51.0 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Antheas Kapenekakis +Date: Fri, 29 Aug 2025 19:04:17 +0200 +Subject: Revert "mangoapp: plumb engineName" + +This reverts commit b9f20436d1bdf7bd8212541817b254e1b4c8eb1e. +--- + layer/VkLayer_FROG_gamescope_wsi.cpp | 9 +-------- + protocol/gamescope-swapchain.xml | 1 - + src/WaylandServer/WaylandServerLegacy.h | 1 - + src/mangoapp.cpp | 6 ------ + src/steamcompmgr.cpp | 6 ------ + src/steamcompmgr.hpp | 1 - + src/steamcompmgr_shared.hpp | 2 -- + src/wlserver.cpp | 4 +--- + 8 files changed, 2 insertions(+), 28 deletions(-) + +diff --git a/layer/VkLayer_FROG_gamescope_wsi.cpp b/layer/VkLayer_FROG_gamescope_wsi.cpp +index 263cbc37bd88..d1835a4c7487 100644 +--- a/layer/VkLayer_FROG_gamescope_wsi.cpp ++++ b/layer/VkLayer_FROG_gamescope_wsi.cpp +@@ -404,7 +404,6 @@ namespace GamescopeWSILayer { + struct GamescopeInstanceData { + wl_display* display; + uint32_t appId = 0; +- std::string engineName; + GamescopeLayerClient::Flags flags = 0; + }; + VKROOTS_DEFINE_SYNCHRONIZED_MAP_TYPE(GamescopeInstance, VkInstance); +@@ -631,14 +630,9 @@ namespace GamescopeWSILayer { + { + uint32_t appId = clientAppId(); + +- std::string engineName; +- if (pCreateInfo->pApplicationInfo && pCreateInfo->pApplicationInfo->pEngineName) +- engineName = pCreateInfo->pApplicationInfo->pEngineName; +- + auto state = GamescopeInstance::create(*pInstance, GamescopeInstanceData { + .display = display, + .appId = appId, +- .engineName = engineName, + .flags = defaultLayerClientFlags(pCreateInfo->pApplicationInfo, appId), + }); + +@@ -1275,8 +1269,7 @@ namespace GamescopeWSILayer { + uint32_t(pCreateInfo->imageColorSpace), + uint32_t(pCreateInfo->compositeAlpha), + uint32_t(pCreateInfo->preTransform), +- uint32_t(pCreateInfo->clipped), +- gamescopeInstance->engineName.c_str()); ++ uint32_t(pCreateInfo->clipped)); + + return VK_SUCCESS; + } +diff --git a/protocol/gamescope-swapchain.xml b/protocol/gamescope-swapchain.xml +index 58ac8463b752..91be3fc02d67 100644 +--- a/protocol/gamescope-swapchain.xml ++++ b/protocol/gamescope-swapchain.xml +@@ -89,7 +89,6 @@ + + + +- + + + +diff --git a/src/WaylandServer/WaylandServerLegacy.h b/src/WaylandServer/WaylandServerLegacy.h +index 63ee2ca17e8c..0facb7dc8b1e 100644 +--- a/src/WaylandServer/WaylandServerLegacy.h ++++ b/src/WaylandServer/WaylandServerLegacy.h +@@ -29,7 +29,6 @@ struct wlserver_vk_swapchain_feedback + VkCompositeAlphaFlagBitsKHR vk_composite_alpha; + VkSurfaceTransformFlagBitsKHR vk_pre_transform; + VkBool32 vk_clipped; +- std::shared_ptr vk_engine_name; + + std::shared_ptr hdr_metadata_blob; + }; +diff --git a/src/mangoapp.cpp b/src/mangoapp.cpp +index d8e1ce7edafe..91e01bc275c6 100644 +--- a/src/mangoapp.cpp ++++ b/src/mangoapp.cpp +@@ -31,7 +31,6 @@ struct mangoapp_msg_v1 { + uint16_t displayRefresh; + bool bAppWantsHDR : 1; + bool bSteamFocused : 1; +- char engineName[40]; + + // WARNING: Always ADD fields, never remove or repurpose fields + } __attribute__((packed)) mangoapp_msg_v1; +@@ -61,11 +60,6 @@ void mangoapp_update( uint64_t visible_frametime, uint64_t app_frametime_ns, uin + mangoapp_msg_v1.displayRefresh = (uint16_t) gamescope::ConvertmHzToHz( g_nOutputRefresh ); + mangoapp_msg_v1.bAppWantsHDR = g_bAppWantsHDRCached; + mangoapp_msg_v1.bSteamFocused = g_focusedBaseAppId == 769; +- memset(mangoapp_msg_v1.engineName, 0, sizeof(mangoapp_msg_v1.engineName)); +- if (focusWindow_engine) +- focusWindow_engine->copy(mangoapp_msg_v1.engineName, sizeof(mangoapp_msg_v1.engineName) / sizeof(char)); +- else +- std::string("gamescope").copy(mangoapp_msg_v1.engineName, sizeof(mangoapp_msg_v1.engineName) / sizeof(char)); + msgsnd(msgid, &mangoapp_msg_v1, sizeof(mangoapp_msg_v1) - sizeof(mangoapp_msg_v1.hdr.msg_type), IPC_NOWAIT); + } + diff --git a/src/steamcompmgr.cpp b/src/steamcompmgr.cpp -index be69ce4b391f..f867335557f9 100644 +index f25f810f9387..d5a6a4af51df 100644 --- a/src/steamcompmgr.cpp +++ b/src/steamcompmgr.cpp -@@ -2509,6 +2509,9 @@ paint_all( bool async, bool dpms ) - } +@@ -1026,7 +1026,6 @@ int g_BlurRadius = 5; + unsigned int g_BlurFadeStartTime = 0; - g_bFSRActive = frameInfo.useFSRLayer0; -+ if ( const auto& heldCommit = g_HeldCommits[HELD_COMMIT_BASE]; heldCommit && heldCommit->upscaledTexture ) { -+ g_bFSRActive = ( heldCommit->upscaledTexture->eFilter == GamescopeUpscaleFilter::FSR ); -+ } + pid_t focusWindow_pid; +-std::shared_ptr focusWindow_engine = nullptr; - g_bFirstFrame = false; - --- -2.50.1 - - -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Georg Lehmann -Date: Mon, 7 Aug 2023 18:54:01 +0200 -Subject: rendervulkan: account for ycbcr descriptor count when creating - descriptor pool - ---- - src/rendervulkan.cpp | 21 ++++++++++++++++++++- - 1 file changed, 20 insertions(+), 1 deletion(-) - -diff --git a/src/rendervulkan.cpp b/src/rendervulkan.cpp -index d833d0093830..ac5c16dab035 100644 ---- a/src/rendervulkan.cpp -+++ b/src/rendervulkan.cpp -@@ -847,6 +847,25 @@ bool CVulkanDevice::createPools() - return false; - } - -+ VkPhysicalDeviceImageFormatInfo2 imageFormatInfo = { -+ .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2, -+ .format = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM, -+ .type = VK_IMAGE_TYPE_2D, -+ .tiling = VK_IMAGE_TILING_OPTIMAL, -+ .usage = VK_IMAGE_USAGE_SAMPLED_BIT, -+ }; -+ -+ VkSamplerYcbcrConversionImageFormatProperties ycbcrProps = { -+ .sType = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES, -+ }; -+ -+ VkImageFormatProperties2 imageFormatProps = { -+ .sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2, -+ .pNext = &ycbcrProps, -+ }; -+ -+ res = vk.GetPhysicalDeviceImageFormatProperties2( physDev(), &imageFormatInfo, &imageFormatProps ); -+ - VkDescriptorPoolSize poolSizes[3] { + focus_t g_steamcompmgr_xdg_focus; + std::vector> g_steamcompmgr_xdg_wins; +@@ -6396,9 +6395,6 @@ bool handle_done_commit( steamcompmgr_win_t *w, xwayland_ctx_t *ctx, uint64_t co + uint32_t j; + for ( j = 0; j < w->commit_queue.size(); j++ ) + { +- if (w->commit_queue[ j ]->feedback.has_value()) +- w->engineName = w->commit_queue[ j ]->feedback->vk_engine_name; +- + if ( w->commit_queue[ j ]->commitID == commitID ) { - VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, -@@ -858,7 +877,7 @@ bool CVulkanDevice::createPools() - }, - { - VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, -- uint32_t(m_descriptorSets.size()) * ((2 * VKR_SAMPLER_SLOTS) + (2 * VKR_LUT3D_COUNT)), -+ uint32_t(m_descriptorSets.size()) * (((ycbcrProps.combinedImageSamplerDescriptorCount + 1) * VKR_SAMPLER_SLOTS) + (2 * VKR_LUT3D_COUNT)), - }, - }; - + gpuvis_trace_printf( "commit %lu done", w->commit_queue[ j ]->commitID ); +@@ -6443,8 +6439,6 @@ bool handle_done_commit( steamcompmgr_win_t *w, xwayland_ctx_t *ctx, uint64_t co + if ( !cv_paint_debug_pause_base_plane ) + g_HeldCommits[ HELD_COMMIT_BASE ] = w->commit_queue[ j ]; + hasRepaint = true; +- +- focusWindow_engine = w->engineName; + } + + if ( w == pFocus->overrideWindow ) +diff --git a/src/steamcompmgr.hpp b/src/steamcompmgr.hpp +index 98e927296483..2f489a26a0aa 100644 +--- a/src/steamcompmgr.hpp ++++ b/src/steamcompmgr.hpp +@@ -144,7 +144,6 @@ struct wlserver_x11_surface_info *lookup_x11_surface_info_from_xid( gamescope_xw + + extern gamescope::VBlankTime g_SteamCompMgrVBlankTime; + extern pid_t focusWindow_pid; +-extern std::shared_ptr focusWindow_engine; + + void init_xwayland_ctx(uint32_t serverId, gamescope_xwayland_server_t *xwayland_server); + void gamescope_set_selection(std::string contents, GamescopeSelection eSelection); +diff --git a/src/steamcompmgr_shared.hpp b/src/steamcompmgr_shared.hpp +index 5a2198d97bed..4027013148b2 100644 +--- a/src/steamcompmgr_shared.hpp ++++ b/src/steamcompmgr_shared.hpp +@@ -149,8 +149,6 @@ struct steamcompmgr_win_t { + bool unlockedForFrameCallback = false; + bool receivedDoneCommit = false; + +- std::shared_ptr engineName; +- + std::vector< gamescope::Rc > commit_queue; + std::shared_ptr> icon; + +diff --git a/src/wlserver.cpp b/src/wlserver.cpp +index a694b5245a97..42c6bc0c2430 100644 +--- a/src/wlserver.cpp ++++ b/src/wlserver.cpp +@@ -862,8 +862,7 @@ static void gamescope_swapchain_swapchain_feedback( struct wl_client *client, st + uint32_t vk_colorspace, + uint32_t vk_composite_alpha, + uint32_t vk_pre_transform, +- uint32_t vk_clipped, +- const char *vk_engine_name) ++ uint32_t vk_clipped) + { + wlserver_wl_surface_info *wl_info = (wlserver_wl_surface_info *)wl_resource_get_user_data( resource ); + if ( wl_info ) +@@ -875,7 +874,6 @@ static void gamescope_swapchain_swapchain_feedback( struct wl_client *client, st + .vk_composite_alpha = VkCompositeAlphaFlagBitsKHR(vk_composite_alpha), + .vk_pre_transform = VkSurfaceTransformFlagBitsKHR(vk_pre_transform), + .vk_clipped = VkBool32(vk_clipped), +- .vk_engine_name = std::make_shared(vk_engine_name), + .hdr_metadata_blob = nullptr, + }); + } -- -2.50.1 +2.51.0 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Antheas Kapenekakis -Date: Wed, 20 Aug 2025 22:07:52 +0200 -Subject: feat: add Ayaneo 3 display +Date: Sun, 31 Aug 2025 20:55:02 +0200 +Subject: fix: separate blend tf to its own check +Currently, blend tf and other color mgmt checks are combined into one +check. However, new hardware does not support the blend tf for a plane, +causing loss of all color mgmt features. Separate the checks so that +color mgmt can still be used on such hardware. + +Also, add the other function checks to drm_supports_color_mgmt so that +there are no edge cases where only subproperties are supported. --- - .../displays/ayaneo.ayaneo3.oled.lua | 69 +++++++++++++++++++ - 1 file changed, 69 insertions(+) - create mode 100644 scripts/00-gamescope/displays/ayaneo.ayaneo3.oled.lua + src/Backends/DRMBackend.cpp | 40 +++++++++++++++++++++++++++++-------- + 1 file changed, 32 insertions(+), 8 deletions(-) -diff --git a/scripts/00-gamescope/displays/ayaneo.ayaneo3.oled.lua b/scripts/00-gamescope/displays/ayaneo.ayaneo3.oled.lua -new file mode 100644 -index 000000000000..9f6f725560b6 ---- /dev/null -+++ b/scripts/00-gamescope/displays/ayaneo.ayaneo3.oled.lua -@@ -0,0 +1,69 @@ -+local panel_id = "aya_fhd_oled" -+local panel_name = "AYA FHD OLED Panel" -+ -+local panel_models = { -+ { vendor = "AYA", model = "AYAOLED_FHD" }, +diff --git a/src/Backends/DRMBackend.cpp b/src/Backends/DRMBackend.cpp +index 83da1bfe231b..c1a714569bf2 100644 +--- a/src/Backends/DRMBackend.cpp ++++ b/src/Backends/DRMBackend.cpp +@@ -559,6 +559,7 @@ extern std::string g_reshade_effect; + + bool drm_update_color_mgmt(struct drm_t *drm); + bool drm_supports_color_mgmt(struct drm_t *drm); ++bool drm_supports_srgb_to_pq(struct drm_t *drm); + bool drm_set_connector( struct drm_t *drm, gamescope::CDRMConnector *conn ); + + struct drm_color_ctm2 { +@@ -2691,13 +2692,15 @@ drm_prepare_liftoff( struct drm_t *drm, const struct FrameInfo_t *frameInfo, boo + } + } + +- if ( drm_supports_color_mgmt( drm ) ) ++ if ( drm_supports_srgb_to_pq( drm ) ) + { + if (!cv_drm_debug_disable_blend_tf && !bSinglePlane) + liftoff_layer_set_property( drm->lo_layers[ i ], "AMD_PLANE_BLEND_TF", drm->pending.output_tf ); + else +- liftoff_layer_set_property( drm->lo_layers[ i ], "AMD_PLANE_BLEND_TF", AMDGPU_TRANSFER_FUNCTION_DEFAULT ); +- ++ liftoff_layer_set_property( drm->lo_layers[ i ], "AMD_PLANE_BLEND_TF", AMDGPU_TRANSFER_FUNCTION_DEFAULT ); ++ } ++ if ( drm_supports_color_mgmt( drm ) ) ++ { + if (!cv_drm_debug_disable_ctm && frameInfo->layers[i].ctm != nullptr) + liftoff_layer_set_property( drm->lo_layers[ i ], "AMD_PLANE_CTM", frameInfo->layers[i].ctm->GetBlobValue() ); + else +@@ -2712,13 +2715,16 @@ drm_prepare_liftoff( struct drm_t *drm, const struct FrameInfo_t *frameInfo, boo + liftoff_layer_unset_property( drm->lo_layers[ i ], "COLOR_ENCODING" ); + liftoff_layer_unset_property( drm->lo_layers[ i ], "COLOR_RANGE" ); + ++ if ( drm_supports_srgb_to_pq( drm ) ) ++ { ++ liftoff_layer_set_property( drm->lo_layers[ i ], "AMD_PLANE_BLEND_TF", AMDGPU_TRANSFER_FUNCTION_DEFAULT ); ++ } + if ( drm_supports_color_mgmt( drm ) ) + { + liftoff_layer_set_property( drm->lo_layers[ i ], "AMD_PLANE_DEGAMMA_TF", AMDGPU_TRANSFER_FUNCTION_DEFAULT ); + liftoff_layer_set_property( drm->lo_layers[ i ], "AMD_PLANE_SHAPER_LUT", 0 ); + liftoff_layer_set_property( drm->lo_layers[ i ], "AMD_PLANE_SHAPER_TF", 0 ); + liftoff_layer_set_property( drm->lo_layers[ i ], "AMD_PLANE_LUT3D", 0 ); +- liftoff_layer_set_property( drm->lo_layers[ i ], "AMD_PLANE_BLEND_TF", AMDGPU_TRANSFER_FUNCTION_DEFAULT ); + liftoff_layer_set_property( drm->lo_layers[ i ], "AMD_PLANE_CTM", 0 ); + } + } +@@ -2870,7 +2876,7 @@ int drm_prepare( struct drm_t *drm, bool async, const struct FrameInfo_t *frameI + + bool bSinglePlane = frameInfo->layerCount < 2 && cv_drm_single_plane_optimizations; + +- if ( drm_supports_color_mgmt( &g_DRM ) && frameInfo->applyOutputColorMgmt ) ++ if ( drm_supports_srgb_to_pq( &g_DRM ) && frameInfo->applyOutputColorMgmt ) + { + if ( !cv_drm_debug_disable_output_tf && !bSinglePlane ) + { +@@ -3371,7 +3377,20 @@ bool drm_supports_color_mgmt(struct drm_t *drm) + if ( !drm->pPrimaryPlane ) + return false; + +- return drm->pPrimaryPlane->GetProperties().AMD_PLANE_CTM.has_value() && drm->pPrimaryPlane->GetProperties().AMD_PLANE_BLEND_TF.has_value(); ++ return drm->pPrimaryPlane->GetProperties().AMD_PLANE_CTM.has_value() && // dm->dc->caps.color.mpc.gamut_remap ++ drm->pPrimaryPlane->GetProperties().AMD_PLANE_SHAPER_LUT.has_value() && // dpp_color_caps.hw_3d_lut ++ drm->pPrimaryPlane->GetProperties().AMD_PLANE_DEGAMMA_TF.has_value(); // dpp_color_caps.dgam_ram || dpp_color_caps.gamma_corr +} + -+local panel_refresh_rates = { 60, 90, 120, 144 } ++bool drm_supports_srgb_to_pq(struct drm_t *drm) ++{ ++ if ( g_bForceDisableColorMgmt ) ++ return false; + -+local panel_hdr = { -+ supported = true, -+ force_enabled = true, -+ eotf = gamescope.eotf.ST2084, -+ max_content_light_level = 993.486, -+ max_frame_average_luminance = 400, -+ min_content_light_level = 0.007 -+} ++ if ( !drm->pPrimaryPlane ) ++ return false; + ++ return drm->pPrimaryPlane->GetProperties().AMD_PLANE_BLEND_TF.has_value(); // dpp_color_caps.ogam_ram + } + + std::span drm_get_valid_refresh_rates( struct drm_t *drm ) +@@ -3501,12 +3520,12 @@ namespace gamescope + if ( g_bOutputHDREnabled ) + { + bNeedsFullComposite |= g_bHDRItmEnable; +- if ( !SupportsColorManagement() ) ++ if ( !SupportsSRGBtoPQ() ) + bNeedsFullComposite |= ( pFrameInfo->layerCount > 1 || pFrameInfo->layers[0].colorspace != GAMESCOPE_APP_TEXTURE_COLORSPACE_HDR10_PQ ); + } + else + { +- if ( !SupportsColorManagement() ) ++ if ( !SupportsSRGBtoPQ() ) + bNeedsFullComposite |= ColorspaceIsHDR( pFrameInfo->layers[0].colorspace ); + } + +@@ -3915,6 +3934,11 @@ namespace gamescope + return drm_supports_color_mgmt( &g_DRM ); + } + ++ bool SupportsSRGBtoPQ() const ++ { ++ return drm_supports_srgb_to_pq( &g_DRM ); ++ } + -+gamescope.config.known_displays[panel_id] = { -+ pretty_name = panel_name, -+ -+ -- These tables are optional -+ colorimetry = (panel_colorimetry ~= nil) and panel_colorimetry, -+ dynamic_refresh_rates = (panel_refresh_rates ~= nil) and panel_refresh_rates, -+ hdr = (panel_hdr ~= nil) and panel_hdr, -+ -+ dynamic_modegen = function(base_mode, refresh) -+ local mode = base_mode -+ debug("["..panel_id.."] Switching mode to "..mode.hdisplay.."x"..mode.vdisplay.."@"..refresh.."Hz") -+ -+ -- Override blanking intervals if defined -+ if panel_resolutions ~= nil then -+ for i, res in ipairs(panel_resolutions) do -+ if res.width == mode.hdisplay and res.height == mode.vdisplay then -+ -+ if res.hfp ~= nil and res.hsync ~= nil and res.hbp ~= nil then -+ gamescope.modegen.set_h_timings(mode, set_res.hfp, set_res.hsync, set_res.hbp) -+ debug("["..panel_id.."] Overriding horizontal blanking interval") -+ end -+ -+ if res.vfp ~= nil and res.vsync ~= nil and res.vbp ~= nil then -+ gamescope.modegen.set_v_timings(mode, set_res.vfp, set_res.vsync, set_res.vbp) -+ debug("["..panel_id.."] Overriding vertical blanking interval") -+ end -+ -+ -- No need to iterate anymore -+ break -+ end -+ end -+ end -+ -+ mode.clock = gamescope.modegen.calc_max_clock(mode, refresh) -+ mode.vrefresh = gamescope.modegen.calc_vrefresh(mode) -+ -+ return mode -+ end, -+ -+ matches = function(display) -+ for i, panel in ipairs(panel_models) do -+ if panel.vendor == display.vendor and panel.model == display.model then -+ debug("["..panel_id.."] Matched vendor: "..display.vendor.." model: "..display.model) -+ return 4000 -+ end -+ end -+ -+ return -1 -+ end -+} -\ No newline at end of file + int Commit( const FrameInfo_t *pFrameInfo ) + { + drm_t *drm = &g_DRM; -- -2.50.1 +2.51.0 + + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Colin Kinloch +Date: Fri, 1 Aug 2025 16:06:23 +0100 +Subject: WaylandBackend: Check features before using color management + +This stops compositors lacking required features, transfer functions or +primaries from triggering protocol errors on start. +--- + src/Backends/WaylandBackend.cpp | 32 ++++++++++++++++++-------------- + 1 file changed, 18 insertions(+), 14 deletions(-) + +diff --git a/src/Backends/WaylandBackend.cpp b/src/Backends/WaylandBackend.cpp +index 664ed0eac070..1171980ba61d 100644 +--- a/src/Backends/WaylandBackend.cpp ++++ b/src/Backends/WaylandBackend.cpp +@@ -1990,13 +1990,14 @@ namespace gamescope + return false; + if ( !Algorithm::Contains( m_WPColorManagerFeatures.eFeatures, WP_COLOR_MANAGER_V1_FEATURE_SET_LUMINANCES ) ) + return false; ++ if ( !Algorithm::Contains( m_WPColorManagerFeatures.eFeatures, WP_COLOR_MANAGER_V1_FEATURE_WINDOWS_SCRGB ) ) ++ return false; + + // Transfer Functions + if ( !Algorithm::Contains( m_WPColorManagerFeatures.eTransferFunctions, WP_COLOR_MANAGER_V1_TRANSFER_FUNCTION_SRGB ) ) + return false; + if ( !Algorithm::Contains( m_WPColorManagerFeatures.eTransferFunctions, WP_COLOR_MANAGER_V1_TRANSFER_FUNCTION_ST2084_PQ ) ) + return false; +- // TODO: Need scRGB + + // Primaries + if ( !Algorithm::Contains( m_WPColorManagerFeatures.ePrimaries, WP_COLOR_MANAGER_V1_PRIMARIES_SRGB ) ) +@@ -2006,6 +2007,22 @@ namespace gamescope + + return true; + }(); ++ ++ if ( m_WPColorManagerFeatures.bSupportsGamescopeColorManagement ) ++ { ++ // HDR10. ++ { ++ wp_image_description_creator_params_v1 *pParams = wp_color_manager_v1_create_parametric_creator( m_pWPColorManager ); ++ wp_image_description_creator_params_v1_set_primaries_named( pParams, WP_COLOR_MANAGER_V1_PRIMARIES_BT2020 ); ++ wp_image_description_creator_params_v1_set_tf_named( pParams, WP_COLOR_MANAGER_V1_TRANSFER_FUNCTION_ST2084_PQ ); ++ m_pWPImageDescriptions[ GAMESCOPE_APP_TEXTURE_COLORSPACE_HDR10_PQ ] = wp_image_description_creator_params_v1_create( pParams ); ++ } ++ ++ // scRGB ++ { ++ m_pWPImageDescriptions[ GAMESCOPE_APP_TEXTURE_COLORSPACE_SCRGB ] = wp_color_manager_v1_create_windows_scrgb( m_pWPColorManager ); ++ } ++ } + } + + m_pLibDecor = libdecor_new( m_pDisplay, &s_LibDecorInterface ); +@@ -2476,19 +2493,6 @@ namespace gamescope + { + m_pWPColorManager = (wp_color_manager_v1 *)wl_registry_bind( pRegistry, uName, &wp_color_manager_v1_interface, 1u ); + wp_color_manager_v1_add_listener( m_pWPColorManager, &s_WPColorManagerListener, this ); +- +- // HDR10. +- { +- wp_image_description_creator_params_v1 *pParams = wp_color_manager_v1_create_parametric_creator( m_pWPColorManager ); +- wp_image_description_creator_params_v1_set_primaries_named( pParams, WP_COLOR_MANAGER_V1_PRIMARIES_BT2020 ); +- wp_image_description_creator_params_v1_set_tf_named( pParams, WP_COLOR_MANAGER_V1_TRANSFER_FUNCTION_ST2084_PQ ); +- m_pWPImageDescriptions[ GAMESCOPE_APP_TEXTURE_COLORSPACE_HDR10_PQ ] = wp_image_description_creator_params_v1_create( pParams ); +- } +- +- // scRGB +- { +- m_pWPImageDescriptions[ GAMESCOPE_APP_TEXTURE_COLORSPACE_SCRGB ] = wp_color_manager_v1_create_windows_scrgb( m_pWPColorManager ); +- } + } + else if ( !strcmp( pInterface, zwp_pointer_constraints_v1_interface.name ) ) + { +-- +2.51.0 diff --git a/anda/games/terra-gamescope/terra-gamescope.spec b/anda/games/terra-gamescope/terra-gamescope.spec index c5630e35a4..3f1e43d863 100755 --- a/anda/games/terra-gamescope/terra-gamescope.spec +++ b/anda/games/terra-gamescope/terra-gamescope.spec @@ -3,12 +3,12 @@ %global _default_patch_fuzz 2 %global build_timestamp %(date +"%Y%m%d") #global gamescope_tag 3.15.11 -%global gamescope_commit f873ec7868fe84d2850e91148bcbd6d6b19a7443 +%global gamescope_commit 2f30679c80791844c29402d232462874fe23dd46 %define short_commit %(echo %{gamescope_commit} | cut -c1-8) Name: terra-gamescope #Version: 100.%{gamescope_tag} -Version: 127.%{short_commit} +Version: 134.%{short_commit} Release: 1%?dist Summary: Micro-compositor for video games on Wayland diff --git a/anda/games/udev-joystick-blacklist/anda.hcl b/anda/games/udev-joystick-blacklist/anda.hcl new file mode 100644 index 0000000000..e0fc065888 --- /dev/null +++ b/anda/games/udev-joystick-blacklist/anda.hcl @@ -0,0 +1,9 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "udev-joystick-blacklist.spec" + } + labels { + nightly = 1 + } +} diff --git a/anda/games/udev-joystick-blacklist/udev-joystick-blacklist.spec b/anda/games/udev-joystick-blacklist/udev-joystick-blacklist.spec new file mode 100644 index 0000000000..f473aef9dd --- /dev/null +++ b/anda/games/udev-joystick-blacklist/udev-joystick-blacklist.spec @@ -0,0 +1,54 @@ +%global commit a1ace571823be5979c135e9cb8e9ae103c7641ac +%global shortcommit %(c=%{commit}; echo ${c:0:7}) +%global commit_date 20250715 + +Name: udev-joystick-blacklist +Version: 0^%{commit_date}git%{shortcommit} +Release: 3%{?dist} +Summary: Fix for keyboard/mouse/tablet being detected as joysticks in Linux +License: Public Domain +URL: https://github.com/denilsonsa/udev-joystick-blacklist +Source0: %{url}/archive/%{commit}.tar.gz +BuildRequires: systemd-rpm-macros +Conflicts: %{name}-rm +Conflicts: steam-device-rules <= 1.0.0.85 +BuildArch: noarch +Packager: Gilver E. + +%description +There are several devices that, although recognized by kernel as joysticks, are not joysticks. + +This package contains rules which will prevent those devices from being recognized as joysticks. + +%package rm +Summary: Fix for keyboard/mouse/tablet being detected as joysticks in Linux +Conflicts: %{name} +Conflicts: steam-device-rules <= 1.0.0.85 +Obsoletes: steam-device-rules <= 1.0.0.85 + +%description rm +There are several devices that, although recognized by kernel as joysticks, are not joysticks. + +This package contains rules which will prevent those devices from being recognized as joysticks by removing the devices. + +%prep +%autosetup -n %{name}-%{commit} + +%build +# Empty. + +%install +install -Dpm644 after_kernel_4_9/51-these-are-not-joysticks.rules -t %{buildroot}%{_udevrulesdir} +install -Dpm644 after_kernel_4_9/51-these-are-not-joysticks-rm.rules -t %{buildroot}%{_udevrulesdir} + +%files +%doc README.md +%{_udevrulesdir}/51-these-are-not-joysticks.rules + +%files rm +%doc README.md +%{_udevrulesdir}/51-these-are-not-joysticks-rm.rules + +%changelog +* Mon Nov 03 2025 Gilver E. - 0^20250715gita1ace57-1 +- Initial package diff --git a/anda/games/udev-joystick-blacklist/update.rhai b/anda/games/udev-joystick-blacklist/update.rhai new file mode 100644 index 0000000000..87e01e4532 --- /dev/null +++ b/anda/games/udev-joystick-blacklist/update.rhai @@ -0,0 +1,5 @@ +rpm.global("commit", gh_commit("denilsonsa/udev-joystick-blacklist")); +if rpm.changed() { + rpm.release(); + rpm.global("commit_date", date()); +} diff --git a/anda/langs/amaranth/amaranth.spec b/anda/langs/amaranth/amaranth.spec new file mode 100644 index 0000000000..24940614b4 --- /dev/null +++ b/anda/langs/amaranth/amaranth.spec @@ -0,0 +1,62 @@ +%global pypi_name amaranth +%global _desc A modern hardware definition language and toolchain based on Python. + +%define _python_dist_allow_version_zero 1 + +Name: python-%{pypi_name} +Version: 0.5.8 +Release: 2%?dist +Summary: A modern hardware definition language and toolchain based on Python +License: BSD-2-Clause +URL: https://github.com/amaranth-lang/amaranth +Source0: %url/archive/refs/tags/v%version.tar.gz +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-installer +BuildRequires: python3-wheel +BuildRequires: python3-setuptools_scm +BuildRequires: python3-packaging +BuildRequires: python3-pip + +Requires: python3-jinja2 +Requires: python3-jschon +Requires: python3-pyvcd + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: amaranth +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n amaranth-%version + +# Swap out pdm.backend to setuptools.build_meta +sed -i 's|pdm.backend|setuptools.build_meta|' pyproject.toml + +%build +export PDM_BUILD_SCM_VERSION=%{version} +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files amaranth + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.md CONTRIBUTING.txt +%license LICENSE.txt +%{_bindir}/amaranth-rpc +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc + +%changelog +* Sun Sep 28 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/amaranth/anda.hcl b/anda/langs/amaranth/anda.hcl new file mode 100644 index 0000000000..701dd1930c --- /dev/null +++ b/anda/langs/amaranth/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "amaranth.spec" + } +} diff --git a/anda/langs/amaranth/update.rhai b/anda/langs/amaranth/update.rhai new file mode 100644 index 0000000000..7e8bd3f744 --- /dev/null +++ b/anda/langs/amaranth/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("amaranth-lang/amaranth")); diff --git a/anda/langs/crystal/crystal/anda.hcl b/anda/langs/crystal/crystal/anda.hcl index d2a5a14455..1ce7a085d6 100644 --- a/anda/langs/crystal/crystal/anda.hcl +++ b/anda/langs/crystal/crystal/anda.hcl @@ -1,5 +1,4 @@ project pkg { - arches = ["x86_64"] rpm { spec = "crystal.spec" } diff --git a/anda/langs/crystal/crystal/crystal.spec b/anda/langs/crystal/crystal/crystal.spec index 2413d2e9d1..bb682dea41 100644 --- a/anda/langs/crystal/crystal/crystal.spec +++ b/anda/langs/crystal/crystal/crystal.spec @@ -1,57 +1,63 @@ -%define debug_package %nil +%bcond bootstrap 1 +%global bootstrap_version 1.17.1 -Name: crystal -Version: 1.17.1 -Release: 1%?dist -Summary: The Crystal Programming Language -License: Apache-2.0 -URL: https://crystal-lang.org/ -Source0: https://github.com/crystal-lang/crystal/releases/download/%version/crystal-%version-1-linux-x86_64-bundled.tar.gz -ExclusiveArch: x86_64 -BuildRequires: rpm_macro(fdupes) +Name: crystal +Version: 1.17.1 +Release: 1%?dist +Summary: A general-purpose, object-oriented programming language +License: Apache-2.0 +Packager: Carl Hörberg +URL: https://crystal-lang.org/ +Source0: https://github.com/crystal-lang/crystal/archive/%version.tar.gz +%if %{with bootstrap} +Source1: https://dev.alpinelinux.org/archive/crystal/crystal-%{bootstrap_version}-%{_arch}-alpine-linux-musl.tar.gz +%else +BuildRequires: crystal +%endif +BuildRequires: gcc gcc-c++ make gc-devel llvm-devel +BuildRequires: pcre2-devel libyaml-devel libffi-devel +Requires: gcc pkgconfig gc-devel +Requires: pcre2-devel openssl-devel zlib-devel +Requires: libyaml-devel libxml2-devel gmp-devel +Suggests: shards %description -%summary. - -%package devel -Summary: Development files for the crystal package - -%description devel -%summary. +Crystal is a programming language with the following goals: +- Have a syntax similar to Ruby (but compatibility with it is not a goal) +- Statically type-checked but without having to specify the type of variables or method arguments +- Be able to call C code by writing bindings to it in Crystal +- Have compile-time evaluation and generation of code, to avoid boilerplate code +- Compile to efficient native code %prep -%autosetup -n crystal-%version-1 +%setup -q +%if %{with bootstrap} +%setup -q -b 1 +%endif %build +%if %{with bootstrap} +# Use bootstrap crystal binary +export PATH="%{_builddir}/crystal-%{bootstrap_version}-%{_arch}-alpine-linux-musl/bin:$PATH" +%endif +%make_build release=1 interpreter=1 LDFLAGS="%{build_ldflags}" CRYSTAL_CONFIG_LIBRARY_PATH=%{_libdir}/crystal %install -mkdir -p %buildroot/usr/bin -mkdir -p %buildroot/usr/share -mkdir -p %buildroot/usr/lib/crystal -install -Dm755 bin/* %buildroot/usr/bin/ -cp -r share/* %buildroot/usr/share/ -cp -r lib/crystal/* %buildroot/usr/lib/crystal/ - -%fdupes %buildroot%_datadir/crystal/src/lib_c/ - +%make_install PREFIX=%{_prefix} %files -%license /usr/share/licenses/crystal/LICENSE -/usr/bin/crystal -/usr/share/zsh/site-functions/_crystal -/usr/share/man/man1/crystal.1.gz -/usr/share/crystal/ -/usr/share/fish/vendor_completions.d/crystal.fish -/usr/share/bash-completion/completions/crystal - -/usr/bin/shards -/usr/share/man/man1/shards.1.gz -/usr/share/man/man5/shard.yml.5.gz - -%files devel -/usr/lib/crystal/ +%license %{_datadir}/licenses/crystal/LICENSE +%{_bindir}/crystal +%{_datadir}/crystal +%{_datadir}/zsh/site-functions/_crystal +%{_datadir}/bash-completion/completions/crystal +%{_datadir}/fish/vendor_completions.d/crystal.fish +%{_mandir}/man1/crystal.1.gz %changelog +* Mon Nov 03 2025 Carl Hörberg - 1.18.2-2 +- Build from source, support multiple architectures. + * Sat Jun 17 2023 windowsboy111 - 1.8.2-2 - Add devel package. diff --git a/anda/langs/crystal/crystal/update.rhai b/anda/langs/crystal/crystal/update.rhai index b2159a6775..8a0aa8cee3 100644 --- a/anda/langs/crystal/crystal/update.rhai +++ b/anda/langs/crystal/crystal/update.rhai @@ -1,9 +1 @@ -let v = gh("crystal-lang/crystal"); -let url = `crystal-${v}-1-linux-x86_64-bundled.tar.gz`; - -if get(`https://github.com/crystal-lang/crystal/releases/expanded_assets/${v}`).contains(url) { - rpm.version(v); -} else { - print(`crystal: ${v} (waiting for bundle)`); - terminate(); -} +rpm.version(gh_tag("crystal-lang/crystal")); diff --git a/anda/langs/crystal/shards/anda.hcl b/anda/langs/crystal/shards/anda.hcl new file mode 100644 index 0000000000..32456c8b0f --- /dev/null +++ b/anda/langs/crystal/shards/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "shards.spec" + } +} diff --git a/anda/langs/crystal/shards/shards.spec b/anda/langs/crystal/shards/shards.spec new file mode 100644 index 0000000000..eb636eef6d --- /dev/null +++ b/anda/langs/crystal/shards/shards.spec @@ -0,0 +1,33 @@ +Name: shards +Version: 0.19.1 +Release: 1%?dist +Summary: Dependency manager for the Crystal language +License: Apache-2.0 +Packager: Carl Hörberg +URL: https://crystal-lang.org/ +Source0: https://github.com/crystal-lang/shards/archive/refs/tags/v%version.tar.gz +BuildRequires: crystal make +BuildRequires: gcc gc-devel libyaml-devel pcre-devel +Suggests: git make +Supplements: crystal + +%description +Shards is a dependency manager for the Crystal programming language. It allows you to easily manage and install external libraries (called "shards") that your Crystal projects depend on. + +%prep +%setup -q + +%build +%make_build release=1 FLAGS="--link-flags=\"%{build_ldflags}\"" + +%install +%make_install PREFIX=%{_prefix} + +%files +%{_bindir}/shards +%{_mandir}/man1/shards.1.gz +%{_mandir}/man5/shard.yml.5.gz + +%changelog +* Mon Nov 03 2025 Carl Hörberg - 0.19.1-1 +- Initial package diff --git a/anda/langs/crystal/shards/update.rhai b/anda/langs/crystal/shards/update.rhai new file mode 100644 index 0000000000..11ba9c5d21 --- /dev/null +++ b/anda/langs/crystal/shards/update.rhai @@ -0,0 +1 @@ +rpm.version(gh_tag("crystal-lang/shards")); diff --git a/anda/langs/d/btdu/btdu.spec b/anda/langs/d/btdu/btdu.spec index 3df7e69e0f..e9901500ad 100644 --- a/anda/langs/d/btdu/btdu.spec +++ b/anda/langs/d/btdu/btdu.spec @@ -1,7 +1,7 @@ %define debug_package %nil Name: btdu -Version: 0.6.0 +Version: 0.6.1 Release: 1%?dist Summary: Sampling disk usage profiler for btrfs License: GPL-2.0-only diff --git a/anda/langs/dart/dart.spec b/anda/langs/dart/dart.spec index 5d1faf93dc..0b0476b3a2 100644 --- a/anda/langs/dart/dart.spec +++ b/anda/langs/dart/dart.spec @@ -1,7 +1,7 @@ %define debug_package %{nil} Name: dart -Version: 3.9.2 +Version: 3.10.1 Release: 1%?dist Summary: The Dart Language License: BSD-3-Clause diff --git a/anda/langs/go/albius/albius.spec b/anda/langs/go/albius/albius.spec index c9a4a44aa2..b1dc7ba95c 100644 --- a/anda/langs/go/albius/albius.spec +++ b/anda/langs/go/albius/albius.spec @@ -1,6 +1,6 @@ %define debug_package %nil -%global commit 7409af7329c51416703c512f5e049368dfb3e710 -%global commit_date 20250613 +%global commit ee04f2624c4fa5875052d2a90f3eae4645966a81 +%global commit_date 20251105 %global shortcommit %(c=%{commit}; echo ${c:0:7}) Name: albius diff --git a/anda/langs/go/chezmoi/chezmoi.spec b/anda/langs/go/chezmoi/chezmoi.spec index 6059988604..5688f29704 100644 --- a/anda/langs/go/chezmoi/chezmoi.spec +++ b/anda/langs/go/chezmoi/chezmoi.spec @@ -4,7 +4,7 @@ # https://github.com/twpayne/chezmoi %global goipath github.com/twpayne/chezmoi -Version: 2.65.0 +Version: 2.67.0 %gometa -f diff --git a/anda/langs/go/elephant/golang-github-abenz1267-elephant.spec b/anda/langs/go/elephant/golang-github-abenz1267-elephant.spec index ad0b0ffb56..ceb77311d9 100644 --- a/anda/langs/go/elephant/golang-github-abenz1267-elephant.spec +++ b/anda/langs/go/elephant/golang-github-abenz1267-elephant.spec @@ -1,5 +1,5 @@ # Generated by go2rpm 1.17.1 -%bcond check 1 +%bcond check 0 %bcond bootstrap 0 %if %{with bootstrap} @@ -10,13 +10,11 @@ %global __requires_exclude %{?__requires_exclude:%{__requires_exclude}|}^golang\\(.*\\)$ %endif -%global upstream_version v1.0.0-beta-8 -%global ver %{sub %upstream_version 2} %global providers archlinuxpkgs calc clipboard desktopapplications files menus providerlist runner symbols websearch # https://github.com/abenz1267/elephant %global goipath github.com/abenz1267/elephant -Version: %{gsub %{gsub %ver - ~ 1} - _} +Version: 2.16.0 %gometa -f @@ -25,18 +23,20 @@ Elephant - cuz it's phat - is a powerful data provider service and backend for b } %global golicenses LICENSE -%global godocs NIX.md README.md cmd/version.txt +%global godocs README.md Name: elephant -Release: %autorelease +Release: 1%?dist Summary: None License: GPL-3.0-only URL: %{gourl} -Source: %{gourl}/archive/refs/tags/%upstream_version.tar.gz +Source: %{gourl}/archive/refs/tags/v%version.tar.gz Provides: golang-github-abenz1267-elephant = %evr Packager: madonuko +# desktopapplications +BuildRequires: wayland-devel %description %{common_description} @@ -46,14 +46,14 @@ Packager: madonuko for prov in string.gmatch(macros.providers, "%S+") do print("%package "..prov.."\n") print("Summary: "..prov.." provider for elephant\n") - print("\n%description "..prov.."\n"..prov.." provider for elephant.\n") + print("\n%description "..prov.."\n"..prov.." provider for elephant.\n\n") print("%files "..prov.."\n") print("/etc/xdg/elephant/providers/"..prov..".so\n\n") end } %prep -%autosetup -n %name-%ver +%autosetup -n %name-%version %goprep -Ae %autopatch -p1 @@ -61,7 +61,7 @@ end %build %define gomodulesmode GO111MODULE=on pushd cmd -(%{gobuild -o %{gobuilddir}/bin/elephant elephant.go}) & +(%{gobuild -o %{gobuilddir}/bin/elephant elephant/elephant.go}) & popd for prov in internal/providers/*/; do pushd $prov @@ -89,9 +89,9 @@ install -Dm755 internal/providers/*/*.so -t %buildroot/etc/xdg/elephant/provider %if %{without bootstrap} %files %license LICENSE -%doc NIX.md README.md cmd/version.txt +%doc README.md %{_bindir}/elephant -%ghost /etc/xdg/elephant/ +%ghost /etc/xdg/elephant/providers/*.so %endif %gopkgfiles diff --git a/anda/langs/go/elephant/update.rhai b/anda/langs/go/elephant/update.rhai index a81e944d08..e8a25fa240 100644 --- a/anda/langs/go/elephant/update.rhai +++ b/anda/langs/go/elephant/update.rhai @@ -1 +1 @@ -rpm.version(gh_rawfile("abenz1267/elephant", "master", "cmd/version.txt")); +rpm.version(gh_rawfile("abenz1267/elephant", "master", "cmd/elephant/version.txt")); diff --git a/anda/langs/go/gh-act/gh-act.spec b/anda/langs/go/gh-act/gh-act.spec index 72df0e52fc..0425398cf8 100644 --- a/anda/langs/go/gh-act/gh-act.spec +++ b/anda/langs/go/gh-act/gh-act.spec @@ -12,7 +12,7 @@ # https://github.com/nektos/act %global goipath github.com/nektos/act -Version: 0.2.81 +Version: 0.2.82 %gometa -f diff --git a/anda/langs/go/google-grpc/golang-google-grpc.terra.spec b/anda/langs/go/google-grpc/golang-google-grpc.terra.spec index afa28a0a9b..b5c6b52d00 100644 --- a/anda/langs/go/google-grpc/golang-google-grpc.terra.spec +++ b/anda/langs/go/google-grpc/golang-google-grpc.terra.spec @@ -11,7 +11,7 @@ # https://github.com/grpc/grpc-go %global goipath google.golang.org/grpc %global forgeurl https://github.com/grpc/grpc-go -Version: 1.75.0 +Version: 1.77.0 %gometa -L diff --git a/anda/langs/go/lazygit/golang-github-jesseduffield-lazygit.spec b/anda/langs/go/lazygit/golang-github-jesseduffield-lazygit.spec index 80a98cc347..17489f9359 100644 --- a/anda/langs/go/lazygit/golang-github-jesseduffield-lazygit.spec +++ b/anda/langs/go/lazygit/golang-github-jesseduffield-lazygit.spec @@ -2,7 +2,7 @@ # https://github.com/jesseduffield/lazygit %global goipath github.com/jesseduffield/lazygit -Version: 0.54.2 +Version: 0.56.0 %gometa -f @@ -13,7 +13,7 @@ Simple terminal UI for git commands.} %global godocs docs README.md VISION.md Name: golang-github-jesseduffield-lazygit -Release: 2%?dist +Release: 1%?dist Summary: Simple terminal UI for git commands License: MIT diff --git a/anda/langs/groovy/groovy-docs/groovy-docs.spec b/anda/langs/groovy/groovy-docs/groovy-docs.spec index d4acca8d41..06a0ff32d3 100644 --- a/anda/langs/groovy/groovy-docs/groovy-docs.spec +++ b/anda/langs/groovy/groovy-docs/groovy-docs.spec @@ -1,5 +1,5 @@ Name: groovy-docs -Version: 5.0.0 +Version: 5.0.2 Release: 1%?dist Summary: Documentation for the Groovy programming language URL: https://groovy-lang.org/ diff --git a/anda/langs/groovy/groovy.spec b/anda/langs/groovy/groovy.spec index 23498cd17a..6a9d3a2a31 100644 --- a/anda/langs/groovy/groovy.spec +++ b/anda/langs/groovy/groovy.spec @@ -1,5 +1,5 @@ Name: groovy -Version: 5.0.0 +Version: 5.0.2 Release: 1%?dist Summary: A multi-faceted language for the Java platform BuildArch: noarch diff --git a/anda/langs/kotlin/kotlin-native/kotlin-native.spec b/anda/langs/kotlin/kotlin-native/kotlin-native.spec index ed1193dc7c..2e3b92b94b 100644 --- a/anda/langs/kotlin/kotlin-native/kotlin-native.spec +++ b/anda/langs/kotlin/kotlin-native/kotlin-native.spec @@ -2,7 +2,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build Name: kotlin-native -Version: 2.2.10 +Version: 2.2.21 Release: 1%?dist Summary: LLVM backend for the Kotlin compiler ExclusiveArch: x86_64 diff --git a/anda/langs/kotlin/kotlin/kotlin.spec b/anda/langs/kotlin/kotlin/kotlin.spec index 704a440611..89c385fa28 100644 --- a/anda/langs/kotlin/kotlin/kotlin.spec +++ b/anda/langs/kotlin/kotlin/kotlin.spec @@ -1,7 +1,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildArch: noarch Name: kotlin -Version: 2.2.10 +Version: 2.2.21 Release: 1%?dist Summary: Statically typed programming language diff --git a/anda/langs/lily/anda.hcl b/anda/langs/lily/anda.hcl new file mode 100644 index 0000000000..ff1526cc87 --- /dev/null +++ b/anda/langs/lily/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "lily.spec" + } +} diff --git a/anda/langs/lily/lily.spec b/anda/langs/lily/lily.spec new file mode 100644 index 0000000000..94eb02687e --- /dev/null +++ b/anda/langs/lily/lily.spec @@ -0,0 +1,45 @@ +Name: lily +Summary: Interpreted language focused on expressiveness and type safety +Version: 2.2 +Release: 1%?dist +License: MIT +URL: https://github.com/fascinatedbox/lily +Source0: %url/archive/refs/tags/v%version.tar.gz +Packager: Owen Zimmerman + +BuildRequires: cmake +BuildRequires: gcc +BuildRequires: g++ + +%description +%{summary}. + +%package devel +Summary: Development files for lily +Requires: %{name} +%pkg_devel_files + +%prep +%autosetup -n %{name}-%{version} + +%build +%cmake +%cmake_build + +%install +install -Dm644 redhat-linux-build/lib/liblily.so %{buildroot}/usr/lib64/liblily.so +%cmake_install + +%files +%doc README.md RELEASES.md +%license LICENSE.txt +%{_bindir}/lily + +%files devel +/usr/lib64/liblily.so +%ghost /usr/lib/liblily.so +%{_includedir}/lily/lily.h + +%changelog +* Thu Oct 30 2025 Owen Zimmerman +- Initial package diff --git a/anda/langs/lily/update.rhai b/anda/langs/lily/update.rhai new file mode 100644 index 0000000000..f7630bfb31 --- /dev/null +++ b/anda/langs/lily/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("fascinatedbox/lily")); diff --git a/anda/langs/nim/grabnim/grabnim.spec b/anda/langs/nim/grabnim/grabnim.spec index 8c147c8d51..2e7310631e 100644 --- a/anda/langs/nim/grabnim/grabnim.spec +++ b/anda/langs/nim/grabnim/grabnim.spec @@ -1,5 +1,5 @@ -%global commit b610436355c1440dcdb54fb486431359ee7e2a40 -%global commit_date 20250817 +%global commit 1a431dc8d703a71b9548d830426ff6a2f0da602c +%global commit_date 20251102 %global shortcommit %{sub %commit 1 7} Name: grabnim diff --git a/anda/langs/nim/netto/netto.spec b/anda/langs/nim/netto/netto.spec index 4f16887c14..e71f90e563 100644 --- a/anda/langs/nim/netto/netto.spec +++ b/anda/langs/nim/netto/netto.spec @@ -1,6 +1,6 @@ Name: netto -Version: 0.1.1 -Release: 2%?dist +Version: 0.1.4 +Release: 1%?dist Summary: 📡 GUI Network Applet License: GPL-3.0-or-later URL: https://github.com/madonuko/netto diff --git a/anda/langs/nim/nim-nightly/anda.hcl b/anda/langs/nim/nim-nightly/anda.hcl index d03dac1566..e154a0f611 100644 --- a/anda/langs/nim/nim-nightly/anda.hcl +++ b/anda/langs/nim/nim-nightly/anda.hcl @@ -3,6 +3,6 @@ project pkg { spec = "nim-nightly.spec" } labels { - nightly = "1" + nightly = 1 } } diff --git a/anda/langs/nim/nim-nightly/nim-nightly.spec b/anda/langs/nim/nim-nightly/nim-nightly.spec index 727e02c88c..e67ad0c15a 100644 --- a/anda/langs/nim/nim-nightly/nim-nightly.spec +++ b/anda/langs/nim/nim-nightly/nim-nightly.spec @@ -1,8 +1,8 @@ %global csrc_commit 561b417c65791cd8356b5f73620914ceff845d10 -%global commit 065c4b443bcbeee02c6c6bb18cb1cc651e3fcf2b +%global commit 0f7b37846773f3193f29e628f75086788ac93fe5 %global shortcommit %(c=%{commit}; echo ${c:0:7}) %global ver 2.3.1 -%global commit_date 20250829 +%global commit_date 20251120 %global debug_package %nil Name: nim-nightly diff --git a/anda/langs/nim/nim/nim.spec b/anda/langs/nim/nim/nim.spec index 4ab05fb44f..e24dbf1986 100644 --- a/anda/langs/nim/nim/nim.spec +++ b/anda/langs/nim/nim/nim.spec @@ -2,8 +2,8 @@ %global debug_package %{nil} Name: nim -Version: 2.2.4 -Release: 3%?dist +Version: 2.2.6 +Release: 1%?dist Summary: Imperative, multi-paradigm, compiled programming language License: MIT and BSD URL: https://nim-lang.org diff --git a/anda/langs/python/cobs/anda.hcl b/anda/langs/python/cobs/anda.hcl new file mode 100644 index 0000000000..acfc87affc --- /dev/null +++ b/anda/langs/python/cobs/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "cobs.spec" + } +} diff --git a/anda/langs/python/cobs/cobs.spec b/anda/langs/python/cobs/cobs.spec new file mode 100644 index 0000000000..642759e7aa --- /dev/null +++ b/anda/langs/python/cobs/cobs.spec @@ -0,0 +1,49 @@ +%global pypi_name cobs +%global _desc Python functions for encoding and decoding COBS. + +Name: python-%{pypi_name} +Version: 1.2.2 +Release: 1%?dist +Summary: Python functions for encoding and decoding COBS +License: MIT +URL: https://pypi.org/project/cobs/ +Source0: %{pypi_source} +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-pip +BuildRequires: python3-setuptools +BuildRequires: python3-setuptools_scm + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: cobs +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n cobs-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files cobs + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.rst +%license LICENSE.txt +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc + +%changelog +* Sun Sep 28 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/cobs/update.rhai b/anda/langs/python/cobs/update.rhai new file mode 100644 index 0000000000..e9d333f16c --- /dev/null +++ b/anda/langs/python/cobs/update.rhai @@ -0,0 +1 @@ +rpm.version(pypi("cobs")); diff --git a/anda/langs/python/curl_cffi/anda.hcl b/anda/langs/python/curl_cffi/anda.hcl new file mode 100644 index 0000000000..598fb0557e --- /dev/null +++ b/anda/langs/python/curl_cffi/anda.hcl @@ -0,0 +1,9 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "curl_cffi.spec" + } + labels { + nightly = 1 + } +} diff --git a/anda/langs/python/curl_cffi/curl_cffi.spec b/anda/langs/python/curl_cffi/curl_cffi.spec new file mode 100644 index 0000000000..c01ac2442e --- /dev/null +++ b/anda/langs/python/curl_cffi/curl_cffi.spec @@ -0,0 +1,55 @@ +%define _unpackaged_files_terminate_build 0 + +%global pypi_name curl_cffi +%global _desc Python binding for curl-impersonate fork via cffi. +%global _version 0.14.0b2 + +Name: python-%{pypi_name} +Version: 0.13.0 +Release: 1%?dist +Summary: Python binding for curl-impersonate fork via cffi.. +License: MIT +URL: https://github.com/lexiforest/curl_cffi +Source0: %{pypi_source} +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +BuildRequires: curl-impersonate-chrome-devel + +Packager: Metcya + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: %{pypi_name} +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n %{pypi_name}-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files %{pypi_name} + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.md +%license LICENSE +%{python3_sitelib}/%{pypi_name}-%{version}.dist-info/* +%{python3_sitelib}/%{pypi_name}/*.{py,so,typed} +%{python3_sitelib}/%{pypi_name}/__pycache__/*.pyc +%{python3_sitelib}/%{pypi_name}/requests/*.py +%{python3_sitelib}/%{pypi_name}/requests/__pycache__/*.pyc + +%changelog +* Sun Nov 02 2025 Metcya +- Initial commit diff --git a/anda/langs/python/curl_cffi/update.rhai b/anda/langs/python/curl_cffi/update.rhai new file mode 100644 index 0000000000..83386246c7 --- /dev/null +++ b/anda/langs/python/curl_cffi/update.rhai @@ -0,0 +1 @@ +rpm.version(pypi("curl_cffi")); diff --git a/anda/langs/python/dotty-dict/anda.hcl b/anda/langs/python/dotty-dict/anda.hcl new file mode 100644 index 0000000000..ab551493a7 --- /dev/null +++ b/anda/langs/python/dotty-dict/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "dotty-dict.spec" + } +} diff --git a/anda/langs/python/dotty-dict/dotty-dict.spec b/anda/langs/python/dotty-dict/dotty-dict.spec new file mode 100644 index 0000000000..c0d0470825 --- /dev/null +++ b/anda/langs/python/dotty-dict/dotty-dict.spec @@ -0,0 +1,53 @@ +%global pypi_name dotty_dict +%global _desc Dictionary wrapper for quick access to deeply nested keys. + +Name: python-%{pypi_name} +Version: 1.3.1 +Release: 1%?dist +Summary: Dictionary wrapper for quick access to deeply nested keys +License: MIT +URL: https://github.com/pawelzny/dotty_dict +Source0: %url/archive/refs/tags/v%{version}.tar.gz +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-build +BuildRequires: python3-installer +BuildRequires: python3-wheel +BuildRequires: python3-poetry-core +BuildRequires: python3-pip + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: dotty_dict +Provides: dotty-dict +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n dotty_dict-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files dotty_dict + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.rst AUTHORS.rst CONTRIBUTING.rst +%license LICENSE +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc +%python3_sitelib/dotty_dict-%version.dist-info/* + +%changelog +* Tue Sep 30 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/dotty-dict/update.rhai b/anda/langs/python/dotty-dict/update.rhai new file mode 100644 index 0000000000..5e673da02e --- /dev/null +++ b/anda/langs/python/dotty-dict/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("pawelzny/dotty_dict")); diff --git a/anda/langs/python/fx2/anda.hcl b/anda/langs/python/fx2/anda.hcl new file mode 100644 index 0000000000..b119dd1efa --- /dev/null +++ b/anda/langs/python/fx2/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "fx2.spec" + } +} diff --git a/anda/langs/python/fx2/fx2.spec b/anda/langs/python/fx2/fx2.spec new file mode 100644 index 0000000000..f662c76340 --- /dev/null +++ b/anda/langs/python/fx2/fx2.spec @@ -0,0 +1,58 @@ +%global pypi_name fx2 +%global _desc Chip support package for Cypress EZ-USB FX2 series microcontrollers. + +Name: python-%{pypi_name} +Version: 0.13 +Release: 2%?dist +Summary: Chip support package for Cypress EZ-USB FX2 series microcontrollers +License: 0BSD +URL: https://github.com/whitequark/libfx2 +Source0: %url/archive/refs/tags/v%version.tar.gz +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-pip +BuildRequires: python3-pdm-backend +BuildRequires: python3-setuptools +BuildRequires: python3-setuptools_scm + +Requires: python3dist(libusb1) + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: libfx2 +Provides: fx2 +Provides: python3-libfx2 +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n libfx2-%{version} + +%build +export SETUPTOOLS_SCM_PRETEND_VERSION=%{version} +pushd software +%pyproject_wheel +popd + +%install +%pyproject_install +%pyproject_save_files fx2 + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.md +%license LICENSE-0BSD.txt +%{_bindir}/fx2tool +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc + +%changelog +* Sun Sep 28 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/fx2/update.rhai b/anda/langs/python/fx2/update.rhai new file mode 100644 index 0000000000..1453f575a3 --- /dev/null +++ b/anda/langs/python/fx2/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("whitequark/libfx2")); diff --git a/anda/langs/python/gay/anda.hcl b/anda/langs/python/gay/anda.hcl new file mode 100644 index 0000000000..0ac75ee2af --- /dev/null +++ b/anda/langs/python/gay/anda.hcl @@ -0,0 +1,9 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "gay.spec" + } + labels { + nightly = 1 + } +} diff --git a/anda/langs/python/gay/gay.spec b/anda/langs/python/gay/gay.spec new file mode 100644 index 0000000000..6de86d7c54 --- /dev/null +++ b/anda/langs/python/gay/gay.spec @@ -0,0 +1,53 @@ +%global commit af18bcf210659b8b5a40624ffab791d49e831017 +%global commit_date 20241015 +%global shortcommit %(c=%{commit}; echo ${c:0:7}) + +%global pypi_name gay +%global _desc Colour your text / terminal to be more gay. + +Name: python-%{pypi_name} +Version: %commit_date.%shortcommit +Release: 1%?dist +Summary: Colour your text / terminal to be more gay +License: MIT +URL: https://github.com/ms-jpq/gay +Source0: %url/archive/%commit/gay-%commit.tar.gz +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: gay +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n gay-%{commit} + +%build +%pyproject_wheel + +%install +%pyproject_install + +%files -n python3-%{pypi_name} +%doc README.md +%license LICENSE +%{_bindir}/gay +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc +%python3_sitelib/gay-1.3.4.dist-info/* + +%changelog +* Tue Sep 30 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/gay/update.rhai b/anda/langs/python/gay/update.rhai new file mode 100644 index 0000000000..8386a9f9f8 --- /dev/null +++ b/anda/langs/python/gay/update.rhai @@ -0,0 +1,5 @@ +rpm.global("commit", gh_commit("ms-jpq/gay")); +if rpm.changed() { + rpm.release(); + rpm.global("commit_date", date()); +} diff --git a/anda/langs/python/halo/anda.hcl b/anda/langs/python/halo/anda.hcl new file mode 100644 index 0000000000..e69a3af3a3 --- /dev/null +++ b/anda/langs/python/halo/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "halo.spec" + } +} diff --git a/anda/langs/python/halo/halo.spec b/anda/langs/python/halo/halo.spec new file mode 100644 index 0000000000..b82b3a2a41 --- /dev/null +++ b/anda/langs/python/halo/halo.spec @@ -0,0 +1,49 @@ +%global pypi_name halo +%global _desc Beautiful spinners for terminal, IPython and Jupyter. + +Name: python-%{pypi_name} +Version: 0.0.31 +Release: 1%?dist +Summary: Beautiful spinners for terminal, IPython and Jupyter +License: MIT +URL: https://github.com/manrajgrover/halo +Source0: %{pypi_source} +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: halo +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n halo-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files halo + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.md +%license LICENSE +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc +%python3_sitelib/halo-%{version}.dist-info/* + +%changelog +* Tue Sep 30 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/halo/update.rhai b/anda/langs/python/halo/update.rhai new file mode 100644 index 0000000000..08b3f339a8 --- /dev/null +++ b/anda/langs/python/halo/update.rhai @@ -0,0 +1 @@ +rpm.version(pypi("halo")); diff --git a/anda/langs/python/imageio-ffmpeg/anda.hcl b/anda/langs/python/imageio-ffmpeg/anda.hcl new file mode 100644 index 0000000000..929ba92e9b --- /dev/null +++ b/anda/langs/python/imageio-ffmpeg/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "imageio-ffmpeg.spec" + } +} diff --git a/anda/langs/python/imageio-ffmpeg/imageio-ffmpeg.spec b/anda/langs/python/imageio-ffmpeg/imageio-ffmpeg.spec new file mode 100644 index 0000000000..eef40aa382 --- /dev/null +++ b/anda/langs/python/imageio-ffmpeg/imageio-ffmpeg.spec @@ -0,0 +1,49 @@ +%global pypi_name imageio-ffmpeg +%global _desc FFMPEG wrapper for Python. + +Name: python-%{pypi_name} +Version: 0.6.0 +Release: 1%?dist +Summary: FFMPEG wrapper for Python +License: BSD-2-Clause +URL: https://github.com/imageio/imageio-ffmpeg +Source0: %url/archive/refs/tags/v%{version}.tar.gz +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-wheel +BuildRequires: python3-setuptools +BuildRequires: python3-setuptools_scm +BuildRequires: python3-pip +BuildRequires: python3-poetry-core + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: imageio-ffmpeg +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n imageio-ffmpeg-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files imageio_ffmpeg + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.md +%license LICENSE + +%changelog +* Sun Nov 09 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/imageio-ffmpeg/update.rhai b/anda/langs/python/imageio-ffmpeg/update.rhai new file mode 100644 index 0000000000..e9fd0358dc --- /dev/null +++ b/anda/langs/python/imageio-ffmpeg/update.rhai @@ -0,0 +1 @@ +rpm.version(pypi("imageio-ffmpeg")); diff --git a/anda/langs/python/iterable-io/LICENSE.txt b/anda/langs/python/iterable-io/LICENSE.txt new file mode 100644 index 0000000000..35ce134d11 --- /dev/null +++ b/anda/langs/python/iterable-io/LICENSE.txt @@ -0,0 +1,65 @@ +GNU LESSER GENERAL PUBLIC LICENSE + +Version 3, 29 June 2007 + +Copyright © 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + +This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. +0. Additional Definitions. + +As used herein, “this License” refers to version 3 of the GNU Lesser General Public License, and the “GNU GPL” refers to version 3 of the GNU General Public License. + +“The Library” refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. + +An “Application” is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. + +A “Combined Work” is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the “Linked Version”. + +The “Minimal Corresponding Source” for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. + +The “Corresponding Application Code” for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. +1. Exception to Section 3 of the GNU GPL. + +You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. +2. Conveying Modified Versions. + +If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: + + a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or + b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. + +3. Object Code Incorporating Material from Library Header Files. + +The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. + b) Accompany the object code with a copy of the GNU GPL and this license document. + +4. Combined Works. + +You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: + + a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. + b) Accompany the Combined Work with a copy of the GNU GPL and this license document. + c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. + d) Do one of the following: + 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. + 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. + e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) + +5. Combined Libraries. + +You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. + b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. + +6. Revised Versions of the GNU Lesser General Public License. + +The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. + +If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. diff --git a/anda/langs/python/iterable-io/anda.hcl b/anda/langs/python/iterable-io/anda.hcl new file mode 100644 index 0000000000..b6cbc67d58 --- /dev/null +++ b/anda/langs/python/iterable-io/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "iterable-io.spec" + } +} diff --git a/anda/langs/python/iterable-io/iterable-io.spec b/anda/langs/python/iterable-io/iterable-io.spec new file mode 100644 index 0000000000..81e0bb531a --- /dev/null +++ b/anda/langs/python/iterable-io/iterable-io.spec @@ -0,0 +1,55 @@ +%global pypi_name iterable-io +%global _desc Python library to adapt iterables to a file-like interface. + +Name: python-%{pypi_name} +Version: 1.0.0 +Release: 1%?dist +Summary: Python library to adapt iterables to a file-like interface + +# According to README +License: LGPL-3.0-only + +URL: https://github.com/pR0Ps/iterable-io +Source0: %{pypi_source} +Source1: LICENSE.txt +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-wheel +BuildRequires: python3-setuptools +BuildRequires: python3-pip + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: iterable-io +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n iterable-io-%{version} + +%build +%pyproject_wheel + +%install +install -Dm644 %{SOURCE1} %{buildroot}%{_defaultlicensedir}/%{name}/LICENSE +%pyproject_install +%pyproject_save_files iterableio + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.md +%{_defaultlicensedir}/%{name}/LICENSE +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc +%python3_sitelib/iterable_io-%version.dist-info/* + +%changelog +* Mon Nov 03 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/iterable-io/update.rhai b/anda/langs/python/iterable-io/update.rhai new file mode 100644 index 0000000000..d9a059d951 --- /dev/null +++ b/anda/langs/python/iterable-io/update.rhai @@ -0,0 +1 @@ +rpm.version(pypi("iterable-io")); diff --git a/anda/langs/python/jschon/anda.hcl b/anda/langs/python/jschon/anda.hcl new file mode 100644 index 0000000000..2969bebd6f --- /dev/null +++ b/anda/langs/python/jschon/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "jschon.spec" + } +} diff --git a/anda/langs/python/jschon/jschon.spec b/anda/langs/python/jschon/jschon.spec new file mode 100644 index 0000000000..6207922308 --- /dev/null +++ b/anda/langs/python/jschon/jschon.spec @@ -0,0 +1,60 @@ +%global pypi_name jschon +%global _desc An object-oriented JSON Schema implementation for Python. + +Name: python-%{pypi_name} +Version: 0.11.1 +Release: 2%?dist +Summary: An object-oriented JSON Schema implementation for Python +License: MIT +URL: https://github.com/marksparkza/jschon +Source0: %url/archive/refs/tags/v%{version}.tar.gz +BuildArch: noarch + +BuildRequires: python3 +BuildRequires: python3-devel +BuildRequires: python3-build +BuildRequires: python3-wheel +BuildRequires: python3-setuptools +BuildRequires: python3-setuptools_scm +BuildRequires: python3-pip +BuildRequires: python3-sphinx +BuildRequires: python3-sphinx_rtd_theme + +Requires: python3-requests +Requires: python3-rfc3986 + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: jschon +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%git_clone %{url}.git %{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files jschon + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.rst CONTRIBUTING.rst CHANGELOG.rst TESTING.rst +%license LICENSE +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc +%{python3_sitelib}/jschon/catalog/json-schema-2019-09/*.json +%{python3_sitelib}/jschon/catalog/json-schema-2020-12/*.json +%python3_sitelib/jschon-%version.dist-info/* + +%changelog +* Sun Sep 28 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/jschon/update.rhai b/anda/langs/python/jschon/update.rhai new file mode 100644 index 0000000000..29f1d73fae --- /dev/null +++ b/anda/langs/python/jschon/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("marksparkza/jschon")); diff --git a/anda/langs/python/latex2mathml/anda.hcl b/anda/langs/python/latex2mathml/anda.hcl new file mode 100644 index 0000000000..32df684396 --- /dev/null +++ b/anda/langs/python/latex2mathml/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "latex2mathml.spec" + } +} diff --git a/anda/langs/python/latex2mathml/latex2mathml.spec b/anda/langs/python/latex2mathml/latex2mathml.spec new file mode 100644 index 0000000000..2eecbb3805 --- /dev/null +++ b/anda/langs/python/latex2mathml/latex2mathml.spec @@ -0,0 +1,55 @@ +%global pypi_name latex2mathml +%global _desc Pure Python library for LaTeX to MathML conversion. + +Name: python-%{pypi_name} +Version: 3.78.1 +Release: 1%?dist +Summary: Pure Python library for LaTeX to MathML conversion +License: MIT +URL: https://github.com/roniemartinez/latex2mathml +Source0: %{pypi_source} +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-wheel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +BuildRequires: python3-poetry-core +BuildRequires: python3-installer +BuildRequires: python3-build + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: latex2mathml +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n latex2mathml-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files latex2mathml + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.md +%license LICENSE +%{_bindir}/l2m +%{_bindir}/latex2mathml +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc +%python3_sitelib/latex2mathml-%version.dist-info/* + +%changelog +* Fri Oct 24 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/latex2mathml/update.rhai b/anda/langs/python/latex2mathml/update.rhai new file mode 100644 index 0000000000..914d701d94 --- /dev/null +++ b/anda/langs/python/latex2mathml/update.rhai @@ -0,0 +1 @@ +rpm.version(pypi("latex2mathml")); diff --git a/anda/langs/python/log_symbols/anda.hcl b/anda/langs/python/log_symbols/anda.hcl new file mode 100644 index 0000000000..5d851fdd7c --- /dev/null +++ b/anda/langs/python/log_symbols/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "log_symbols.spec" + } +} diff --git a/anda/langs/python/log_symbols/log_symbols.spec b/anda/langs/python/log_symbols/log_symbols.spec new file mode 100644 index 0000000000..2acf6b403a --- /dev/null +++ b/anda/langs/python/log_symbols/log_symbols.spec @@ -0,0 +1,50 @@ +%global pypi_name log_symbols +%global _desc Colored symbols for various log levels for Python. + +Name: python-%{pypi_name} +Version: 0.0.14 +Release: 1%?dist +Summary: Colored symbols for various log levels for Python +License: MIT +URL: https://github.com/manrajgrover/py-log-symbols +Source0: %{pypi_source} +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: log_symbols +Provides: py-log-symbols +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n %{pypi_name}-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files log_symbols + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.md +%license LICENSE +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc +%python3_sitelib/log_symbols-%{version}.dist-info/* + +%changelog +* Tue Sep 30 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/log_symbols/update.rhai b/anda/langs/python/log_symbols/update.rhai new file mode 100644 index 0000000000..99710c3447 --- /dev/null +++ b/anda/langs/python/log_symbols/update.rhai @@ -0,0 +1 @@ +rpm.version(pypi("log_symbols")); diff --git a/anda/langs/python/magic-wormhole/anda.hcl b/anda/langs/python/magic-wormhole/anda.hcl new file mode 100644 index 0000000000..7e2dcc5239 --- /dev/null +++ b/anda/langs/python/magic-wormhole/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "magic-wormhole.spec" + } +} diff --git a/anda/langs/python/magic-wormhole/magic-wormhole.spec b/anda/langs/python/magic-wormhole/magic-wormhole.spec new file mode 100644 index 0000000000..8c684b4281 --- /dev/null +++ b/anda/langs/python/magic-wormhole/magic-wormhole.spec @@ -0,0 +1,61 @@ +%global pypi_name magic-wormhole +%global _desc get things from one computer to another, safely. + +Name: python-%{pypi_name} +Version: 0.21.1 +Release: 2%?dist +Summary: get things from one computer to another, safely +License: MIT +URL: https://github.com/magic-wormhole/magic-wormhole +Source0: %url/archive/refs/tags/%version.tar.gz +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-wheel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +BuildRequires: python3-versioneer + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: magic-wormhole +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%pkg_completion -bfzn %{pypi_name} wormhole_complete + +%prep +%autosetup -n magic-wormhole-%{version} + +%build +%pyproject_wheel + +%install +install -Dm644 wormhole_complete.bash %{buildroot}%{bash_completions_dir}/wormhole_complete.bash +install -Dm644 wormhole_complete.fish %{buildroot}%{fish_completions_dir}/wormhole_complete.fish +install -Dm644 wormhole_complete.zsh %{buildroot}%{zsh_completions_dir}/_wormhole_complete +install -Dm644 docs/wormhole.1 %{buildroot}%{_mandir}/man1/wormhole.1 +%pyproject_install +%pyproject_save_files wormhole +rm %{buildroot}%{_usr}/wormhole_complete.* + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.md docs/*.rst +%license LICENSE +%{_bindir}/magic-wormhole +%{_bindir}/wormhole +%{_mandir}/man1/wormhole.1.gz +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc +%python3_sitelib/magic_wormhole-%version.dist-info/* + +%changelog +* Mon Nov 03 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/magic-wormhole/update.rhai b/anda/langs/python/magic-wormhole/update.rhai new file mode 100644 index 0000000000..216ef8ca97 --- /dev/null +++ b/anda/langs/python/magic-wormhole/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("magic-wormhole/magic-wormhole")); diff --git a/anda/langs/python/mdtex2html/anda.hcl b/anda/langs/python/mdtex2html/anda.hcl new file mode 100644 index 0000000000..0d1d104dc2 --- /dev/null +++ b/anda/langs/python/mdtex2html/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "mdtex2html.spec" + } +} diff --git a/anda/langs/python/mdtex2html/mdtex2html.spec b/anda/langs/python/mdtex2html/mdtex2html.spec new file mode 100644 index 0000000000..5ecab72ff8 --- /dev/null +++ b/anda/langs/python/mdtex2html/mdtex2html.spec @@ -0,0 +1,50 @@ +%global pypi_name mdtex2html +%global _desc python3-library to convert Markdown with included LaTeX-Formulas to HTML with MathML. + +Name: python-%{pypi_name} +Version: 1.3.1 +Release: 1%?dist +Summary: python3-library to convert Markdown with included LaTeX-Formulas to HTML with MathML +License: LGPL-2.1 +URL: https://github.com/polarwinkel/mdtex2html +Source0: %{pypi_source} +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-wheel +BuildRequires: python3-setuptools +BuildRequires: python3-pip + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: mdtex2html +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n mdtex2html-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files mdtex2html + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.md +%license LICENSE +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc +%python3_sitelib/mdtex2html-%version.dist-info/* + +%changelog +* Fri Oct 24 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/mdtex2html/update.rhai b/anda/langs/python/mdtex2html/update.rhai new file mode 100644 index 0000000000..0a2dccaf3f --- /dev/null +++ b/anda/langs/python/mdtex2html/update.rhai @@ -0,0 +1 @@ +rpm.version(pypi("mdtex2html")); diff --git a/anda/langs/python/milc/anda.hcl b/anda/langs/python/milc/anda.hcl new file mode 100644 index 0000000000..2b33a7f2d2 --- /dev/null +++ b/anda/langs/python/milc/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "milc.spec" + } +} diff --git a/anda/langs/python/milc/milc.spec b/anda/langs/python/milc/milc.spec new file mode 100644 index 0000000000..cfc9e833a6 --- /dev/null +++ b/anda/langs/python/milc/milc.spec @@ -0,0 +1,56 @@ +%global pypi_name milc +%global _desc Batteries-Included Python 3 CLI Framework. + +Name: python-%{pypi_name} +Version: 1.9.1 +Release: 1%?dist +Summary: Batteries-Included Python 3 CLI Framework +License: MIT +URL: https://github.com/clueboard/milc +Source0: %url/archive/refs/tags/%{version}.tar.gz +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-wheel +BuildRequires: python3-setuptools +BuildRequires: python3-pip + +Requires: python3-platformdirs +Requires: python3-argcomplete +Requires: python3-colorama +Requires: python3-halo + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: milc +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n milc-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files milc + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.md COMPARISONS.md CHANGELOG.rst +%license LICENSE +%{_bindir}/milc-color +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc +%python3_sitelib/milc-%version.dist-info/* + +%changelog +* Tue Sep 30 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/milc/update.rhai b/anda/langs/python/milc/update.rhai new file mode 100644 index 0000000000..4578cff642 --- /dev/null +++ b/anda/langs/python/milc/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("clueboard/milc")); diff --git a/anda/langs/python/mpv/python-mpv.spec b/anda/langs/python/mpv/python-mpv.spec index f65f454d3a..d0ca15e65a 100644 --- a/anda/langs/python/mpv/python-mpv.spec +++ b/anda/langs/python/mpv/python-mpv.spec @@ -1,8 +1,10 @@ %define debug_package %nil +%global pypi_name mpv +%global _desc python-mpv is a ctypes-based python interface to the mpv media player. It gives you more or less full control of all features of the player, just as the lua interface does. -Name: python3-mpv +Name: python-%{pypi_name} Version: 1.0.8 -Release: 1%?dist +Release: 2%?dist Summary: Python interface to the awesome mpv media player License: GPL-2.0+ OR LGPL-2.1+ URL: https://github.com/jaseg/python-mpv @@ -10,31 +12,57 @@ Source0: https://github.com/jaseg/python-mpv/archive/refs/tags/v%version.tar.gz Requires: mpv-devel BuildRequires: python3-devel BuildRequires: python3dist(setuptools) +BuildRequires: python3-pip %description -python-mpv is a ctypes-based python interface to the mpv media player. -It gives you more or less full control of all features of the player, just as the lua interface does. +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc %prep %autosetup -n python-mpv-%version +%if 0%{?fedora} <= 41 || 0%{?rhel} cat< setup.py from setuptools import setup setup() EOL +%endif %build +%if 0%{?fedora} <= 41 || 0%{?rhel} %py3_build +%else +%pyproject_wheel +%endif %install +%if 0%{?fedora} <= 41 || 0%{?rhel} %py3_install +%else +%pyproject_install +%pyproject_save_files mpv +%endif +%if 0%{?fedora} <= 41 || 0%{?rhel} %files %doc README.rst %license LICENSE.GPL LICENSE.LGPL %ghost %python3_sitelib/__pycache__/mpv.cpython-*.pyc %python3_sitelib/mpv-%version-py%python3_version.egg-info/ %python3_sitelib/mpv.py +%else +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.rst +%license LICENSE.GPL LICENSE.LGPL +%ghost %python3_sitelib/__pycache__/mpv.cpython-*.pyc +%python3_sitelib/mpv.py +%endif %changelog %autochangelog diff --git a/anda/langs/python/pgpy13/anda.hcl b/anda/langs/python/pgpy13/anda.hcl new file mode 100644 index 0000000000..b15add48ac --- /dev/null +++ b/anda/langs/python/pgpy13/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "pgpy13.spec" + } +} diff --git a/anda/langs/python/pgpy13/pgpy13.spec b/anda/langs/python/pgpy13/pgpy13.spec new file mode 100644 index 0000000000..678d1f481c --- /dev/null +++ b/anda/langs/python/pgpy13/pgpy13.spec @@ -0,0 +1,57 @@ +%global pypi_name PGPy13 +%global _desc PGPy is a Python library for implementing Pretty Good Privacy into Python programs, conforming to the OpenPGP specification per RFC 4880. + +Name: python-%{pypi_name} +Version: 0.6.1rc1 +Release: 1%?dist +Summary: Pretty Good Privacy for Python +License: BSD-3-Clause +URL: https://github.com/memory/PGPy +Source0: https://files.pythonhosted.org/packages/source/P/PGPy13/pgpy13-%{version}.tar.gz +BuildArch: noarch + +BuildRequires: python3 +BuildRequires: python3.10 +BuildRequires: python3-build +BuildRequires: python3-installer +BuildRequires: python3-wheel +BuildRequires: python3-setuptools +BuildRequires: python3-setuptools_scm +BuildRequires: python3-pip +BuildRequires: python3-devel +BuildRequires: python3-installer +BuildRequires: git + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: PGPy13 +Provides: pgpy13 +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n pgpy13-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files pgpy + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.rst +%license LICENSE +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc + +%changelog +* Wed Oct 08 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/pgpy13/update.rhai b/anda/langs/python/pgpy13/update.rhai new file mode 100644 index 0000000000..2f77501f77 --- /dev/null +++ b/anda/langs/python/pgpy13/update.rhai @@ -0,0 +1 @@ +rpm.version(pypi("PGPy13")); diff --git a/anda/langs/python/pillow-heif/python3-pillow-heif.spec b/anda/langs/python/pillow-heif/python3-pillow-heif.spec index 4e017729ed..605157daca 100644 --- a/anda/langs/python/pillow-heif/python3-pillow-heif.spec +++ b/anda/langs/python/pillow-heif/python3-pillow-heif.spec @@ -6,7 +6,7 @@ %bcond_with doc Name: python-%{srcname} -Version: 1.1.0 +Version: 1.1.1 Release: 1%?dist Summary: Python library for working with HEIF images and plugin for Pillow diff --git a/anda/langs/python/pip-system-certs/python-pip-system-certs.spec b/anda/langs/python/pip-system-certs/python-pip-system-certs.spec index c301b56d5d..d373ae0dce 100644 --- a/anda/langs/python/pip-system-certs/python-pip-system-certs.spec +++ b/anda/langs/python/pip-system-certs/python-pip-system-certs.spec @@ -1,6 +1,6 @@ # Created by pyp2rpm-3.3.10 %global pypi_name pip-system-certs -%global pypi_version 5.2 +%global pypi_version 5.3 Name: python-%{pypi_name} Version: %{pypi_version} diff --git a/anda/langs/python/protobuf/python3-protobuf.spec b/anda/langs/python/protobuf/python3-protobuf.spec index 8ab35d3a6f..ea3d532638 100644 --- a/anda/langs/python/protobuf/python3-protobuf.spec +++ b/anda/langs/python/protobuf/python3-protobuf.spec @@ -2,7 +2,7 @@ %global pypi_name protobuf Name: python-%{pypi_name} -Version: 6.32.0 +Version: 6.33.1 Release: 1%?dist Summary: Protocol Buffers diff --git a/anda/langs/python/py-spinners/anda.hcl b/anda/langs/python/py-spinners/anda.hcl new file mode 100644 index 0000000000..2aa5726200 --- /dev/null +++ b/anda/langs/python/py-spinners/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "py-spinners.spec" + } +} diff --git a/anda/langs/python/py-spinners/py-spinners.spec b/anda/langs/python/py-spinners/py-spinners.spec new file mode 100644 index 0000000000..da2827b417 --- /dev/null +++ b/anda/langs/python/py-spinners/py-spinners.spec @@ -0,0 +1,50 @@ +%global pypi_name spinners +%global _desc More than 60 spinners for terminal, python wrapper for amazing node library cli-spinners. + +Name: python-%{pypi_name} +Version: 0.0.24 +Release: 1%?dist +Summary: More than 60 spinners for terminal, python wrapper for amazing node library cli-spinners +License: MIT +URL: https://pypi.org/project/spinners/ +Source0: %{pypi_source} +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-pip +BuildRequires: python3-setuptools + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: py-spinners +Provides: %{pypi_name} +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n %{pypi_name}-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files %{pypi_name} + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.md +%license LICENSE +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc +%python3_sitelib/spinners-%{version}.dist-info/* + +%changelog +* Tue Sep 30 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/py-spinners/update.rhai b/anda/langs/python/py-spinners/update.rhai new file mode 100644 index 0000000000..faacc79dc9 --- /dev/null +++ b/anda/langs/python/py-spinners/update.rhai @@ -0,0 +1 @@ +rpm.version(pypi("spinners")); diff --git a/anda/langs/python/pyvcd/anda.hcl b/anda/langs/python/pyvcd/anda.hcl new file mode 100644 index 0000000000..1210696ce7 --- /dev/null +++ b/anda/langs/python/pyvcd/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "pyvcd.spec" + } +} diff --git a/anda/langs/python/pyvcd/pyvcd.spec b/anda/langs/python/pyvcd/pyvcd.spec new file mode 100644 index 0000000000..ddde4591e0 --- /dev/null +++ b/anda/langs/python/pyvcd/pyvcd.spec @@ -0,0 +1,57 @@ +%global pypi_name pyvcd +%global _desc Python package for writing Value Change Dump (VCD) files. + +Name: python-%{pypi_name} +Version: 0.4.0 +Release: 2%?dist +Summary: Python package for writing Value Change Dump (VCD) files +License: MIT +URL: https://github.com/SanDisk-Open-Source/pyvcd +Source0: %url/releases/download/%version/pyvcd-%{version}.tar.gz +BuildArch: noarch + +BuildRequires: python3 +BuildRequires: python3.10 +BuildRequires: python3-build +BuildRequires: python3-installer +BuildRequires: python3-wheel +BuildRequires: python3-setuptools +BuildRequires: python3-setuptools_scm +BuildRequires: python3-pip +BuildRequires: python3-devel +BuildRequires: python3-installer +BuildRequires: git + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: pyvcd +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n pyvcd-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files vcd + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.rst CODE_OF_CONDUCT.md CHANGELOG.rst +%license LICENSE.txt +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc +%python3_sitelib/pyvcd-%version.dist-info/* + +%changelog +* Sat Sep 27 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/pyvcd/update.rhai b/anda/langs/python/pyvcd/update.rhai new file mode 100644 index 0000000000..9c489c3f8f --- /dev/null +++ b/anda/langs/python/pyvcd/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("SanDisk-Open-Source/pyvcd")); diff --git a/anda/langs/python/pywal16/python-pywal16.spec b/anda/langs/python/pywal16/python-pywal16.spec index 1393fb3ef7..9387e03093 100644 --- a/anda/langs/python/pywal16/python-pywal16.spec +++ b/anda/langs/python/pywal16/python-pywal16.spec @@ -3,7 +3,7 @@ Pywal is a tool that generates a color palette from the dominant colors in an image. It then applies the colors system-wide and on-the-fly in all of your favourite programs.} Name: python-%{pypi_name} -Version: 3.8.9 +Version: 3.8.11 Release: 1%?dist Summary: 16 color fork of the original Pywal License: MIT diff --git a/anda/langs/python/pywebview/anda.hcl b/anda/langs/python/pywebview/anda.hcl new file mode 100644 index 0000000000..5782960bdd --- /dev/null +++ b/anda/langs/python/pywebview/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "pywebview.spec" + } +} diff --git a/anda/langs/python/pywebview/pywebview.spec b/anda/langs/python/pywebview/pywebview.spec new file mode 100644 index 0000000000..4f3b8e3321 --- /dev/null +++ b/anda/langs/python/pywebview/pywebview.spec @@ -0,0 +1,48 @@ +%global pypi_name pywebview +%global _desc Build GUI for your Python program with JavaScript, HTML, and CSS. + +Name: python-%{pypi_name} +Version: 6.1 +Release: 1%?dist +Summary: Build GUI for your Python program with JavaScript, HTML, and CSS +License: BSD-3-Clause +URL: https://github.com/r0x0r/pywebview +Source0: %{pypi_source} +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-wheel +BuildRequires: python3-setuptools +BuildRequires: python3-setuptools_scm +BuildRequires: python3-pip + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: pywebview +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n pywebview-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files webview + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.md +%license LICENSE SECURITY.md + +%changelog +* Tue Nov 04 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/pywebview/update.rhai b/anda/langs/python/pywebview/update.rhai new file mode 100644 index 0000000000..b69e27b96f --- /dev/null +++ b/anda/langs/python/pywebview/update.rhai @@ -0,0 +1 @@ +rpm.version(pypi("pywebview")); diff --git a/anda/langs/python/screeninfo/anda.hcl b/anda/langs/python/screeninfo/anda.hcl new file mode 100644 index 0000000000..97cef03905 --- /dev/null +++ b/anda/langs/python/screeninfo/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "screeninfo.spec" + } +} diff --git a/anda/langs/python/screeninfo/screeninfo.spec b/anda/langs/python/screeninfo/screeninfo.spec new file mode 100644 index 0000000000..4bc95b2bc9 --- /dev/null +++ b/anda/langs/python/screeninfo/screeninfo.spec @@ -0,0 +1,49 @@ +%global pypi_name screeninfo +%global _desc Fetch location and size of physical screens. + +Name: python-%{pypi_name} +Version: 0.8.1 +Release: 1%?dist +Summary: Fetch location and size of physical screens +License: MIT +URL: https://github.com/rr-/screeninfo +Source0: %{pypi_source} +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-wheel +BuildRequires: python3-setuptools +BuildRequires: python3-setuptools_scm +BuildRequires: python3-pip +BuildRequires: python3-poetry-core + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: screeninfo +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n screeninfo-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files screeninfo + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.md +%license LICENSE.md + +%changelog +* Sun Nov 09 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/screeninfo/update.rhai b/anda/langs/python/screeninfo/update.rhai new file mode 100644 index 0000000000..430f0e1346 --- /dev/null +++ b/anda/langs/python/screeninfo/update.rhai @@ -0,0 +1 @@ +rpm.version(pypi("screeninfo")); diff --git a/anda/langs/python/sounddevice/anda.hcl b/anda/langs/python/sounddevice/anda.hcl new file mode 100644 index 0000000000..80f5b9fc82 --- /dev/null +++ b/anda/langs/python/sounddevice/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "sounddevice.spec" + } +} diff --git a/anda/langs/python/sounddevice/sounddevice.spec b/anda/langs/python/sounddevice/sounddevice.spec new file mode 100644 index 0000000000..6237876197 --- /dev/null +++ b/anda/langs/python/sounddevice/sounddevice.spec @@ -0,0 +1,50 @@ +%global pypi_name sounddevice +%global _desc 🔉 Play and Record Sound with Python 🐍. + +Name: python-%{pypi_name} +Version: 0.5.3 +Release: 1%?dist +Summary: 🔉 Play and Record Sound with Python 🐍 +License: MIT +URL: https://python-sounddevice.rtfd.io/ +Source0: %{pypi_source} +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-wheel +BuildRequires: python3-setuptools +BuildRequires: python3-pip + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: sounddevice +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n sounddevice-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files sounddevice + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.rst CONTRIBUTING.rst NEWS.rst +%license LICENSE +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc +%python3_sitelib/sounddevice-%version.dist-info/* + +%changelog +* Fri Oct 24 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/sounddevice/update.rhai b/anda/langs/python/sounddevice/update.rhai new file mode 100644 index 0000000000..e08be47a95 --- /dev/null +++ b/anda/langs/python/sounddevice/update.rhai @@ -0,0 +1 @@ +rpm.version(pypi("sounddevice")); diff --git a/anda/langs/python/spake2/anda.hcl b/anda/langs/python/spake2/anda.hcl new file mode 100644 index 0000000000..2cc82f2e67 --- /dev/null +++ b/anda/langs/python/spake2/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "spake2.spec" + } +} diff --git a/anda/langs/python/spake2/spake2.spec b/anda/langs/python/spake2/spake2.spec new file mode 100644 index 0000000000..64061662c8 --- /dev/null +++ b/anda/langs/python/spake2/spake2.spec @@ -0,0 +1,49 @@ +%global pypi_name spake2 +%global _desc pure-python implementation of the SPAKE2 Password-Authenticated Key Exchange algorithm. + +Name: python-%{pypi_name} +Version: 0.9 +Release: 1%?dist +Summary: pure-python implementation of the SPAKE2 Password-Authenticated Key Exchange algorithm +License: MIT +URL: https://github.com/warner/python-spake2 +Source0: %{pypi_source} +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-wheel +BuildRequires: python3-setuptools +BuildRequires: python3-pip + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n spake2-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files spake2 + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.md +%license LICENSE +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc +%python3_sitelib/spake2-%version.dist-info/* + +%changelog +* Mon Nov 03 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/spake2/update.rhai b/anda/langs/python/spake2/update.rhai new file mode 100644 index 0000000000..ac1e790f98 --- /dev/null +++ b/anda/langs/python/spake2/update.rhai @@ -0,0 +1 @@ +rpm.version(pypi("spake2")); diff --git a/anda/langs/python/superisoupdater/anda.hcl b/anda/langs/python/superisoupdater/anda.hcl new file mode 100644 index 0000000000..faf4d34d2f --- /dev/null +++ b/anda/langs/python/superisoupdater/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "superisoupdater.spec" + } +} diff --git a/anda/langs/python/superisoupdater/remove-version-reqs.patch b/anda/langs/python/superisoupdater/remove-version-reqs.patch new file mode 100644 index 0000000000..e367b49cb3 --- /dev/null +++ b/anda/langs/python/superisoupdater/remove-version-reqs.patch @@ -0,0 +1,33 @@ +diff --git a/requirements.txt b/requirements.txt +index f450174..94ac9b8 100644 +--- a/requirements.txt ++++ b/requirements.txt +@@ -1,4 +1,4 @@ +-beautifulsoup4==4.12.2 +-requests==2.31.0 +-tqdm==4.65.0 +-PGPy13==0.6.1rc1 +\ No newline at end of file ++beautifulsoup4 ++requests ++tqdm ++PGPy13 +diff --git a/setup.py b/setup.py +index aa41242..348b51c 100644 +--- a/setup.py ++++ b/setup.py +@@ -43,10 +43,10 @@ setup( + package_data={"": ["config.toml.default"]}, + python_requires=">=3.10, <4", + install_requires=[ +- "beautifulsoup4==4.12.2", +- "requests==2.31.0", +- "tqdm==4.65.0", +- "PGPy13==0.6.1rc1", ++ "beautifulsoup4", ++ "requests", ++ "tqdm", ++ "PGPy13", + ], # Optional + # extras_require={ + # "dev": [""], diff --git a/anda/langs/python/superisoupdater/superisoupdater.spec b/anda/langs/python/superisoupdater/superisoupdater.spec new file mode 100644 index 0000000000..a7b7751d77 --- /dev/null +++ b/anda/langs/python/superisoupdater/superisoupdater.spec @@ -0,0 +1,63 @@ +%global pypi_name sisou +%global _desc A powerful tool to conveniently update all of your ISOs! + +Name: python-%{pypi_name} +Version: 1.4.1 +Release: 1%?dist +Summary: %{_desc} +License: GPLv3 +URL: https://github.com/JoshuaVandaele/SuperISOUpdater +Source0: %url/archive/refs/tags/%{version}.tar.gz +Patch0: remove-version-reqs.patch +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-build +BuildRequires: python3-wheel +BuildRequires: python3-setuptools +BuildRequires: python3-pip + +Packager: Owen Zimmerman + +%description +%{_desc} + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: sisou +Provides: SuperISOUpdater +Provides: superisoupdater +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%{_desc} + +%prep +%autosetup -p1 -n SuperISOUpdater-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files sisou + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.md +%license LICENSE +%{_bindir}/sisou +%ghost %{python3_sitelib}/__pycache__/*.cpython-*.pyc +%ghost %{python3_sitelib}/%{name}/subcommands/__pycache__/*.cpython-*.pyc +%{python3_sitelib}/sisou-%{version}.dist-info/* +%{python3_sitelib}/config/*.py +%{python3_sitelib}/config/__pycache__/*.cpython-*.pyc +%{python3_sitelib}/config/__pycache__/*.cpython-*.*-*.pyc +%{python3_sitelib}/config/config.toml.default +%{python3_sitelib}/modules/*.py +%{python3_sitelib}/modules/__pycache__/*.pyc +%{python3_sitelib}/modules/updaters/*.py +%{python3_sitelib}/modules/updaters/__pycache__/*.pyc + +%changelog +* Wed Oct 08 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/superisoupdater/update.rhai b/anda/langs/python/superisoupdater/update.rhai new file mode 100644 index 0000000000..ddf8b96010 --- /dev/null +++ b/anda/langs/python/superisoupdater/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("JoshuaVandaele/SuperISOUpdater")); diff --git a/anda/langs/python/synapse-s3-storage-provider/anda.hcl b/anda/langs/python/synapse-s3-storage-provider/anda.hcl new file mode 100644 index 0000000000..5d6d179786 --- /dev/null +++ b/anda/langs/python/synapse-s3-storage-provider/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "synapse-s3-storage-provider.spec" + } +} diff --git a/anda/langs/python/synapse-s3-storage-provider/synapse-s3-storage-provider.spec b/anda/langs/python/synapse-s3-storage-provider/synapse-s3-storage-provider.spec new file mode 100644 index 0000000000..43f8eba74e --- /dev/null +++ b/anda/langs/python/synapse-s3-storage-provider/synapse-s3-storage-provider.spec @@ -0,0 +1,49 @@ +%global pypi_name synapse-s3-storage-provider +%global _desc Synapse storage provider to fetch and store media in Amazon S3. + +Name: python-%{pypi_name} +Version: 1.6.0 +Release: 1%?dist +Summary: Synapse storage provider to fetch and store media in Amazon S3 +License: Apache-2.0 +URL: https://github.com/matrix-org/synapse-s3-storage-provider +Source0: %{url}/archive/refs/tags/v%{version}.tar.gz +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: synapse-s3-storage-provider +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n %{pypi_name}-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files s3_storage_provider + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.md +%license LICENSE +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc +%{_bindir}/s3_media_upload + +%changelog +* Thu Oct 23 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/synapse-s3-storage-provider/update.rhai b/anda/langs/python/synapse-s3-storage-provider/update.rhai new file mode 100644 index 0000000000..c1bcb54663 --- /dev/null +++ b/anda/langs/python/synapse-s3-storage-provider/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("matrix-org/synapse-s3-storage-provider")); diff --git a/anda/langs/python/txtorcon/anda.hcl b/anda/langs/python/txtorcon/anda.hcl new file mode 100644 index 0000000000..9812f24c16 --- /dev/null +++ b/anda/langs/python/txtorcon/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "txtorcon.spec" + } +} diff --git a/anda/langs/python/txtorcon/shebangs.patch b/anda/langs/python/txtorcon/shebangs.patch new file mode 100644 index 0000000000..fed9620aaa --- /dev/null +++ b/anda/langs/python/txtorcon/shebangs.patch @@ -0,0 +1,80 @@ +diff --git a/examples/launch_tor_endpoint2.py b/examples/launch_tor_endpoint2.py +index 72a24c4..30fc34e 100755 +--- a/examples/launch_tor_endpoint2.py ++++ b/examples/launch_tor_endpoint2.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + + # Here we set up a Twisted Web server and then launch a slave tor + # with a configured hidden service directed at the Web server we set +diff --git a/examples/launch_tor_with_simplehttpd.py b/examples/launch_tor_with_simplehttpd.py +index 6c799c7..1edae61 100755 +--- a/examples/launch_tor_with_simplehttpd.py ++++ b/examples/launch_tor_with_simplehttpd.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # -*- coding: utf-8 -*- + '''Create a new tor node and add a simple http server to it, serving a given + directory over http. The server is single-threaded and very limited. +diff --git a/examples/minimal_endpoint.py b/examples/minimal_endpoint.py +index fc8115d..5fd2499 100755 +--- a/examples/minimal_endpoint.py ++++ b/examples/minimal_endpoint.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + + from twisted.internet import reactor + from twisted.internet.endpoints import serverFromString +diff --git a/examples/monitor.py b/examples/monitor.py +index 1f4237c..2e06475 100755 +--- a/examples/monitor.py ++++ b/examples/monitor.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + + # Just listens for a few EVENTs from Tor (INFO NOTICE WARN ERR) and + # prints out the contents, so functions like a log monitor. +diff --git a/examples/stem_relay_descriptor.py b/examples/stem_relay_descriptor.py +index 2c9d1cf..08bd7b4 100755 +--- a/examples/stem_relay_descriptor.py ++++ b/examples/stem_relay_descriptor.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + + # This shows how to get the detailed information about a + # relay descriptor and parse it into Stem's RelayDescriptor +diff --git a/examples/stream_circuit_logger.py b/examples/stream_circuit_logger.py +index 50a98a1..00949ec 100755 +--- a/examples/stream_circuit_logger.py ++++ b/examples/stream_circuit_logger.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + + # This uses an IStreamListener and an ICircuitListener to log all + # built circuits and all streams that succeed. +diff --git a/examples/tor_info.py b/examples/tor_info.py +index e1cc8fa..a46244c 100755 +--- a/examples/tor_info.py ++++ b/examples/tor_info.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + + # Simple usage example of TorInfo. This class does some magic so that + # once it's set up, all the attributes it has (or appears to) are +diff --git a/examples/webui_server.py b/examples/webui_server.py +index 28d0367..293989d 100755 +--- a/examples/webui_server.py ++++ b/examples/webui_server.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + + from twisted.internet import reactor + from nevow.appserver import NevowSite diff --git a/anda/langs/python/txtorcon/txtorcon.spec b/anda/langs/python/txtorcon/txtorcon.spec new file mode 100644 index 0000000000..0ed1b15ee9 --- /dev/null +++ b/anda/langs/python/txtorcon/txtorcon.spec @@ -0,0 +1,54 @@ +%global pypi_name txtorcon +%global _desc Twisted-based asynchronous Tor control protocol implementation. Includes unit-tests, examples, state-tracking code and configuration abstraction. + +Name: python-%{pypi_name} +Version: 24.8.0 +Release: 1%?dist +Summary: Twisted-based asynchronous Tor control protocol implementation. Includes unit-tests, examples, state-tracking code and configuration abstraction +License: MIT +URL: https://github.com/meejah/txtorcon +Source0: %{pypi_source} +Patch0: shebangs.patch +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-wheel +BuildRequires: python3-setuptools +BuildRequires: python3-pip + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: txtorcon +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -p1 -n txtorcon-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files txtorcon + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.rst INSTALL +%license LICENSE +%python3_sitelib/twisted/plugins/__pycache__/txtorcon_endpoint_parser.*.pyc +%python3_sitelib/txtorcon-%version.dist-info/* +%python3_sitelib/twisted/plugins/*.py +%{_datadir}/txtorcon/* +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc + +%changelog +* Mon Nov 03 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/txtorcon/update.rhai b/anda/langs/python/txtorcon/update.rhai new file mode 100644 index 0000000000..9e88efe672 --- /dev/null +++ b/anda/langs/python/txtorcon/update.rhai @@ -0,0 +1 @@ +rpm.version(pypi("txtorcon")); diff --git a/anda/langs/python/types-colorama/anda.hcl b/anda/langs/python/types-colorama/anda.hcl new file mode 100644 index 0000000000..9589feec9a --- /dev/null +++ b/anda/langs/python/types-colorama/anda.hcl @@ -0,0 +1,9 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "types-colorama.spec" + } + labels { + nightly = 1 + } +} diff --git a/anda/langs/python/types-colorama/types-colorama.spec b/anda/langs/python/types-colorama/types-colorama.spec new file mode 100644 index 0000000000..f13ae10174 --- /dev/null +++ b/anda/langs/python/types-colorama/types-colorama.spec @@ -0,0 +1,52 @@ +%global commit e19edcea117f6737d60e53d8a4001d0853eee5ac +%global commit_date 20251120 +%global shortcommit %(c=%{commit}; echo ${c:0:7}) + +%global pypi_name types-colorama +%global _desc Typing stubs for colorama. + +Name: python-%{pypi_name} +Version: 0~%{commit_date}git.%shortcommit +Release: 1%?dist +Summary: Typing stubs for colorama +License: Apache-2.0 +URL: https://github.com/python/typeshed +Source0: %url/archive/%commit/typeshed-%commit.tar.gz +BuildArch: noarch +BuildRequires: python3-devel +Requires: python3-colorama +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: types-colorama +Provides: python%{python3_pkgversion}dist(types-colorama) +Provides: python3.13dist(types-colorama) +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n typeshed-%{commit} + +%build +# Not needed for stub file package + +%install +mkdir -p %{buildroot}%{python3_sitelib}/colorama-stubs +install -Dm755 stubs/colorama/colorama/*.pyi %{buildroot}%{python3_sitelib}/colorama-stubs/ +install -Dm755 stubs/colorama/METADATA.toml %{buildroot}%{python3_sitelib}/colorama-stubs/METADATA.toml + +%files -n python3-%{pypi_name} +%doc README.md MAINTAINERS.md CONTRIBUTING.md +%license LICENSE +%python3_sitelib/colorama-stubs/METADATA.toml +%{python3_sitelib}/colorama-stubs/*.pyi + +%changelog +* Tue Sep 30 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/types-colorama/update.rhai b/anda/langs/python/types-colorama/update.rhai new file mode 100644 index 0000000000..8f3b59cbfc --- /dev/null +++ b/anda/langs/python/types-colorama/update.rhai @@ -0,0 +1,5 @@ +rpm.global("commit", gh_commit("python/typeshed")); +if rpm.changed() { + rpm.release(); + rpm.global("commit_date", date()); +} diff --git a/anda/langs/python/west/anda.hcl b/anda/langs/python/west/anda.hcl new file mode 100644 index 0000000000..f15f1e4d3c --- /dev/null +++ b/anda/langs/python/west/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "west.spec" + } +} diff --git a/anda/langs/python/west/update.rhai b/anda/langs/python/west/update.rhai new file mode 100644 index 0000000000..00dbbc8bac --- /dev/null +++ b/anda/langs/python/west/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("zephyrproject-rtos/west")); diff --git a/anda/langs/python/west/west.spec b/anda/langs/python/west/west.spec new file mode 100644 index 0000000000..1d3748b9b6 --- /dev/null +++ b/anda/langs/python/west/west.spec @@ -0,0 +1,55 @@ +%global pypi_name west +%global _desc West, Zephyr's meta-tool. + +Name: python-%{pypi_name} +Version: 1.5.0 +Release: 1%?dist +Summary: West, Zephyr's meta-tool +License: Apache-2.0 +URL: https://github.com/zephyrproject-rtos/west +Source0: %{url}/archive/refs/tags/v%{version}.tar.gz +BuildArch: noarch + +BuildRequires: python3-build +BuildRequires: python3-installer +BuildRequires: python3-wheel +BuildRequires: python3-setuptools +BuildRequires: python3-setuptools_scm +BuildRequires: python3-pip +BuildRequires: python3-devel +BuildRequires: python3-installer + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: west +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n west-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files west + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.rst MAINTAINERS.rst +%license LICENSE +%{_bindir}/west +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc +%python3_sitelib/west-%version.dist-info/* + +%changelog +* Fri Oct 10 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/yamale/anda.hcl b/anda/langs/python/yamale/anda.hcl new file mode 100644 index 0000000000..12d2c4e9b6 --- /dev/null +++ b/anda/langs/python/yamale/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "yamale.spec" + } +} diff --git a/anda/langs/python/yamale/update.rhai b/anda/langs/python/yamale/update.rhai new file mode 100644 index 0000000000..4d480d058b --- /dev/null +++ b/anda/langs/python/yamale/update.rhai @@ -0,0 +1 @@ +rpm.version(pypi("yamale")); diff --git a/anda/langs/python/yamale/yamale.spec b/anda/langs/python/yamale/yamale.spec new file mode 100644 index 0000000000..1c31e6f317 --- /dev/null +++ b/anda/langs/python/yamale/yamale.spec @@ -0,0 +1,51 @@ +%global pypi_name yamale +%global _desc A schema and validator for YAML. + +Name: python-%{pypi_name} +Version: 6.0.0 +Release: 1%?dist +Summary: A schema and validator for YAML +License: MIT +URL: https://github.com/23andMe/Yamale +Source0: %{pypi_source} +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-wheel +BuildRequires: python3-setuptools +BuildRequires: python3-pip + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: yamale +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n yamale-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files yamale + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.md SECURITY.md +%license LICENSE +%{_bindir}/yamale +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc +%python3_sitelib/yamale-%version.dist-info/* + +%changelog +* Fri Oct 24 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/python/zipstream-ng/anda.hcl b/anda/langs/python/zipstream-ng/anda.hcl new file mode 100644 index 0000000000..ddd70e5b33 --- /dev/null +++ b/anda/langs/python/zipstream-ng/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "zipstream-ng.spec" + } +} diff --git a/anda/langs/python/zipstream-ng/update.rhai b/anda/langs/python/zipstream-ng/update.rhai new file mode 100644 index 0000000000..04c6921cba --- /dev/null +++ b/anda/langs/python/zipstream-ng/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("pR0Ps/zipstream-ng")); diff --git a/anda/langs/python/zipstream-ng/zipstream-ng.spec b/anda/langs/python/zipstream-ng/zipstream-ng.spec new file mode 100644 index 0000000000..ea421e2221 --- /dev/null +++ b/anda/langs/python/zipstream-ng/zipstream-ng.spec @@ -0,0 +1,51 @@ +%global pypi_name zipstream-ng +%global _desc 🔉 A modern and easy to use streamable zip file generator + +Name: python-%{pypi_name} +Version: 1.9.0 +Release: 1%?dist +Summary: A modern and easy to use streamable zip file generator +License: LGPL-3.0-only +URL: https://github.com/pR0Ps/zipstream-ng +Source0: %url/archive/refs/tags/v%version.tar.gz +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-wheel +BuildRequires: python3-setuptools +BuildRequires: python3-pip + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: zipstream-ng +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n zipstream-ng-%{version} + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files zipstream + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.md CHANGELOG.md docs/zipserver.rst +%license LICENSE +%{_bindir}/zipserver +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc +%python3_sitelib/zipstream_ng-%version.dist-info/* + +%changelog +* Mon Nov 03 2025 Owen Zimmerman +- Initial commit diff --git a/anda/langs/rust/bacon/anda.hcl b/anda/langs/rust/bacon/anda.hcl new file mode 100644 index 0000000000..9bde42893f --- /dev/null +++ b/anda/langs/rust/bacon/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "rust-bacon.spec" + } +} diff --git a/anda/langs/rust/bacon/rust-bacon.spec b/anda/langs/rust/bacon/rust-bacon.spec new file mode 100644 index 0000000000..69f1c1b0f1 --- /dev/null +++ b/anda/langs/rust/bacon/rust-bacon.spec @@ -0,0 +1,134 @@ +# Generated by rust2rpm 27 +%bcond check 1 + +%global crate bacon +%global features "sound,clipboard" + +Name: rust-bacon +Version: 3.20.1 +Release: 1%?dist +Summary: Background rust compiler +Packager: metcya + +License: AGPL-3.0 +URL: https://crates.io/crates/bacon +Source: %{crates_source} + +BuildRequires: anda-srpm-macros +BuildRequires: mold +BuildRequires: cargo-rpm-macros >= 24 +BuildRequires: alsa-lib-devel + +%global _description %{expand: +Background rust compiler.} + +%description %{_description} + +%package -n %{crate} +Summary: %{summary} +License: AGPL-3.0 + +%description -n %{crate} %{_description} + +%files -n %{crate} +%license LICENSE +%license LICENSE.dependencies +%doc CHANGELOG.md +%doc CONTRIBUTING.md +%doc README.md +%{_bindir}/bacon + +%package devel +Summary: %{summary} +BuildArch: noarch + +%description devel %{_description} + +This package contains library source intended for building other packages which +use the "%{crate}" crate. + +%files devel +%license %{crate_instdir}/LICENSE +%doc %{crate_instdir}/CHANGELOG.md +%doc %{crate_instdir}/CONTRIBUTING.md +%doc %{crate_instdir}/README.md +%{crate_instdir}/ + +%package -n %{name}+default-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+default-devel %{_description} + +This package contains library source intended for building other packages which +use the "default" feature of the "%{crate}" crate. + +%files -n %{name}+default-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+arboard-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+arboard-devel %{_description} + +This package contains library source intended for building other packages which +use the "arboard" feature of the "%{crate}" crate. + +%files -n %{name}+arboard-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+clipboard-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+clipboard-devel %{_description} + +This package contains library source intended for building other packages which +use the "clipboard" feature of the "%{crate}" crate. + +%files -n %{name}+clipboard-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+rodio-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+rodio-devel %{_description} + +This package contains library source intended for building other packages which +use the "rodio" feature of the "%{crate}" crate. + +%files -n %{name}+rodio-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+sound-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+sound-devel %{_description} + +This package contains library source intended for building other packages which +use the "sound" feature of the "%{crate}" crate. + +%files -n %{name}+sound-devel +%ghost %{crate_instdir}/Cargo.toml + +%prep +%autosetup -n %{crate}-%{version} -p1 +%{cargo_prep_online} + +%build +%{cargo_build -f %{features}} +%{cargo_license_online -f %{features}} > LICENSE.dependencies + +%install +%{cargo_install} + +%if %{with check} +%check +%{cargo_test} +%endif + +%changelog +%autochangelog diff --git a/anda/langs/rust/bacon/update.rhai b/anda/langs/rust/bacon/update.rhai new file mode 100644 index 0000000000..7fb3bdd582 --- /dev/null +++ b/anda/langs/rust/bacon/update.rhai @@ -0,0 +1 @@ +rpm.version(crates("bacon")); diff --git a/anda/langs/rust/bottom/bottom-fix-metadata-auto.diff b/anda/langs/rust/bottom/bottom-fix-metadata-auto.diff index 7ea813b0a6..5badb0f2f9 100644 --- a/anda/langs/rust/bottom/bottom-fix-metadata-auto.diff +++ b/anda/langs/rust/bottom/bottom-fix-metadata-auto.diff @@ -1,33 +1,33 @@ ---- bottom-0.10.2/Cargo.toml 1970-01-01T00:00:01+00:00 -+++ bottom-0.10.2/Cargo.toml 2024-08-18T14:28:49.594610+00:00 -@@ -354,15 +354,6 @@ +--- bottom-0.11.1/Cargo.toml 1970-01-01T00:00:01+00:00 ++++ bottom-0.11.1/Cargo.toml 2025-08-15T10:26:42.425577+00:00 +@@ -357,38 +357,11 @@ [target.'cfg(all(target_arch = "x86_64", target_os = "linux"))'.dev-dependencies.portable-pty] - version = "0.8.1" + version = "0.9.0" -[target.'cfg(target_os = "freebsd")'.dependencies.filedescriptor] --version = "0.8.2" +-version = "0.8.3" - -[target.'cfg(target_os = "freebsd")'.dependencies.serde_json] --version = "1.0.120" +-version = "1.0.142" - -[target.'cfg(target_os = "freebsd")'.dependencies.sysctl] --version = "0.5.5" +-version = "0.6.0" - [target.'cfg(target_os = "linux")'.dependencies.rustix] - version = "0.38.34" + version = "1.0.8" features = [ -@@ -370,24 +361,6 @@ + "fs", "param", - ] - +-] +- -[target.'cfg(target_os = "macos")'.dependencies.core-foundation] --version = "0.9.4" +-version = "0.10.1" - -[target.'cfg(target_os = "macos")'.dependencies.mach2] --version = "0.4.2" +-version = "0.4.3" - -[target.'cfg(target_os = "windows")'.dependencies.windows] --version = "0.58.0" +-version = "0.61.3" -features = [ - "Win32_Foundation", - "Win32_Security", @@ -36,13 +36,11 @@ - "Win32_System_Ioctl", - "Win32_System_ProcessStatus", - "Win32_System_Threading", --] -- - [target."cfg(unix)".dependencies.libc] - version = "0.2.155" + ] -@@ -402,3 +375,4 @@ - [lints.rustdoc] - broken_intra_doc_links = "deny" - missing_crate_level_docs = "deny" + [target."cfg(unix)".dependencies.libc] +@@ -420,3 +393,4 @@ + codegen-units = 1 + debug = 0 + strip = "symbols" + diff --git a/anda/langs/rust/bottom/rust-bottom.spec b/anda/langs/rust/bottom/rust-bottom.spec index 9f3ca65a4d..f0995ad078 100644 --- a/anda/langs/rust/bottom/rust-bottom.spec +++ b/anda/langs/rust/bottom/rust-bottom.spec @@ -1,10 +1,11 @@ -# Generated by rust2rpm 26 -%bcond_without check +# Generated by rust2rpm 27 +%bcond check 0 +%global __brp_mangle_shebangs_exclude_from ^/usr/src/.*$ %global crate bottom Name: rust-bottom -Version: 0.11.1 +Version: 0.11.4 Release: 1%?dist Summary: Customizable cross-platform graphical process/system monitor for the terminal @@ -25,7 +26,7 @@ terminal. Supports Linux, macOS, and Windows.} %package -n %{crate} Summary: %{summary} -License: MIT +License: (0BSD OR MIT OR Apache-2.0) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND (BSD-2-Clause OR MIT OR Apache-2.0) AND ISC AND MIT AND (MIT OR Apache-2.0) AND (MIT OR Zlib OR Apache-2.0) AND MPL-2.0 AND (Unlicense OR MIT) AND Zlib AND (Zlib OR Apache-2.0 OR MIT) Packager: Ben Woods %description -n %{crate} %{_description} @@ -35,25 +36,232 @@ Packager: Ben Woods %license LICENSE.dependencies %doc README.md %{_bindir}/btm -%{_datadir}/bash-completion/completions/btm -%{_datadir}/fish/vendor_completions.d/btm.fish -%{_datadir}/zsh/site-functions/_btm +%{_bindir}/schema %{_mandir}/man1/btm.1* +%pkg_completion -Bfz -n %crate btm + +%package devel +Summary: %{summary} +BuildArch: noarch + +%description devel %{_description} + +This package contains library source intended for building other packages which +use the "%{crate}" crate. + +%files devel +%license %{crate_instdir}/LICENSE +%doc %{crate_instdir}/README.md +%{crate_instdir}/ + +%package -n %{name}+default-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+default-devel %{_description} + +This package contains library source intended for building other packages which +use the "default" feature of the "%{crate}" crate. + +%files -n %{name}+default-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+battery-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+battery-devel %{_description} + +This package contains library source intended for building other packages which +use the "battery" feature of the "%{crate}" crate. + +%files -n %{name}+battery-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+deploy-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+deploy-devel %{_description} + +This package contains library source intended for building other packages which +use the "deploy" feature of the "%{crate}" crate. + +%files -n %{name}+deploy-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+fern-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+fern-devel %{_description} + +This package contains library source intended for building other packages which +use the "fern" feature of the "%{crate}" crate. + +%files -n %{name}+fern-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+generate_schema-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+generate_schema-devel %{_description} + +This package contains library source intended for building other packages which +use the "generate_schema" feature of the "%{crate}" crate. + +%files -n %{name}+generate_schema-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+gpu-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+gpu-devel %{_description} + +This package contains library source intended for building other packages which +use the "gpu" feature of the "%{crate}" crate. + +%files -n %{name}+gpu-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+log-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+log-devel %{_description} + +This package contains library source intended for building other packages which +use the "log" feature of the "%{crate}" crate. + +%files -n %{name}+log-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+logging-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+logging-devel %{_description} + +This package contains library source intended for building other packages which +use the "logging" feature of the "%{crate}" crate. + +%files -n %{name}+logging-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+nvidia-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+nvidia-devel %{_description} + +This package contains library source intended for building other packages which +use the "nvidia" feature of the "%{crate}" crate. + +%files -n %{name}+nvidia-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+nvml-wrapper-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+nvml-wrapper-devel %{_description} + +This package contains library source intended for building other packages which +use the "nvml-wrapper" feature of the "%{crate}" crate. + +%files -n %{name}+nvml-wrapper-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+schemars-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+schemars-devel %{_description} + +This package contains library source intended for building other packages which +use the "schemars" feature of the "%{crate}" crate. + +%files -n %{name}+schemars-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+serde_json-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+serde_json-devel %{_description} + +This package contains library source intended for building other packages which +use the "serde_json" feature of the "%{crate}" crate. + +%files -n %{name}+serde_json-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+starship-battery-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+starship-battery-devel %{_description} + +This package contains library source intended for building other packages which +use the "starship-battery" feature of the "%{crate}" crate. + +%files -n %{name}+starship-battery-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+strum-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+strum-devel %{_description} + +This package contains library source intended for building other packages which +use the "strum" feature of the "%{crate}" crate. + +%files -n %{name}+strum-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+time-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+time-devel %{_description} + +This package contains library source intended for building other packages which +use the "time" feature of the "%{crate}" crate. + +%files -n %{name}+time-devel +%ghost %{crate_instdir}/Cargo.toml + +%package -n %{name}+zfs-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+zfs-devel %{_description} + +This package contains library source intended for building other packages which +use the "zfs" feature of the "%{crate}" crate. + +%files -n %{name}+zfs-devel +%ghost %{crate_instdir}/Cargo.toml + %prep %autosetup -n %{crate}-%{version} -p1 %cargo_prep_online %build -#cargo_build -%{cargo_license_summary_online} -%{cargo_license_online} > LICENSE.dependencies +#cargo_build -f generate_schema +%{cargo_license_summary_online -f generate_schema} +%{cargo_license_online -f generate_schema} > LICENSE.dependencies %install # https://github.com/ClementTsang/bottom/blob/main/docs/content/contribution/packaging-and-distribution.md#manpage-and-completion-generation export BTM_GENERATE=true -%cargo_install +%cargo_install -f generate_schema # Completions +ls target/tmp/bottom install -Dpm 0644 target/tmp/bottom/completion/btm.bash %{buildroot}%{_datadir}/bash-completion/completions/btm install -Dpm 0644 target/tmp/bottom/completion/btm.fish %{buildroot}%{_datadir}/fish/vendor_completions.d/btm.fish install -Dpm 0644 target/tmp/bottom/completion/_btm %{buildroot}%{_datadir}/zsh/site-functions/_btm @@ -61,7 +269,7 @@ install -Dpm 0644 target/tmp/bottom/manpage/btm.1 %{buildroot}%{_mandir}/man1/bt %if %{with check} %check -%cargo_test +%cargo_test -f generate_schema %endif %changelog diff --git a/anda/langs/rust/eza/rust-eza.spec b/anda/langs/rust/eza/rust-eza.spec index ed9f936655..173dd8d6fe 100644 --- a/anda/langs/rust/eza/rust-eza.spec +++ b/anda/langs/rust/eza/rust-eza.spec @@ -4,7 +4,7 @@ %global crate eza Name: rust-eza -Version: 0.23.1 +Version: 0.23.4 Release: 1%?dist Summary: Modern replacement for ls diff --git a/anda/langs/rust/gitoxide/rust-gitoxide.spec b/anda/langs/rust/gitoxide/rust-gitoxide.spec index 26d08644b3..10df3b1295 100644 --- a/anda/langs/rust/gitoxide/rust-gitoxide.spec +++ b/anda/langs/rust/gitoxide/rust-gitoxide.spec @@ -5,7 +5,7 @@ %global crate gitoxide Name: rust-gitoxide -Version: 0.45.0 +Version: 0.46.0 Release: 1%?dist Summary: Command-line application for interacting with git repositories diff --git a/anda/langs/rust/jellyfin-rpc/rust-jellyfin-rpc-cli.spec b/anda/langs/rust/jellyfin-rpc/rust-jellyfin-rpc-cli.spec index a405cdb3eb..51fbebd0dd 100644 --- a/anda/langs/rust/jellyfin-rpc/rust-jellyfin-rpc-cli.spec +++ b/anda/langs/rust/jellyfin-rpc/rust-jellyfin-rpc-cli.spec @@ -5,7 +5,7 @@ %global crate jellyfin-rpc-cli Name: rust-jellyfin-rpc-cli -Version: 1.3.3 +Version: 1.3.4 Release: 1%?dist Summary: Displays the content you're currently watching on Discord! diff --git a/anda/langs/rust/rnote/rnote.spec b/anda/langs/rust/rnote/rnote.spec index 4641617a5a..76092a65d4 100644 --- a/anda/langs/rust/rnote/rnote.spec +++ b/anda/langs/rust/rnote/rnote.spec @@ -1,8 +1,8 @@ %global rustflags_debuginfo 1 Name: rnote -Version: 0.12.0 -Release: 2%?dist +Version: 0.13.1 +Release: 1%?dist Summary: Sketch and take handwritten notes License: GPL-3.0 URL: https://github.com/flxzt/rnote diff --git a/anda/langs/rust/run0-sudo-shim/anda.hcl b/anda/langs/rust/run0-sudo-shim/anda.hcl new file mode 100644 index 0000000000..0f265cdc41 --- /dev/null +++ b/anda/langs/rust/run0-sudo-shim/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "run0-sudo-shim.spec" + } +} diff --git a/anda/langs/rust/run0-sudo-shim/run0-sudo-shim.spec b/anda/langs/rust/run0-sudo-shim/run0-sudo-shim.spec new file mode 100644 index 0000000000..57c6aa373b --- /dev/null +++ b/anda/langs/rust/run0-sudo-shim/run0-sudo-shim.spec @@ -0,0 +1,35 @@ +Name: run0-sudo-shim +Version: 1.2.0 +Release: 1%?dist +Summary: An imitation of sudo, using run0 internally +SourceLicense: BSD-3-Clause +License: (Apache-2.0 OR MIT) AND BSD-3-Clause AND MIT +URL: https://github.com/LordGrimmauld/run0-sudo-shim +Source0: %url/archive/refs/tags/%version.tar.gz +BuildRequires: rpm_macro(cargo_install) rust-packaging +Conflicts: sudo + +%description +run0-sudo-shim attempts to imitate sudo as close as possible, while actually using run0 in the back. + +run0 does not rely on SUID binaries, which makes it a more secure option. It is also included in any systemd-based linux installation. + +However, many programs just expect sudo to exist, so a shim is necessary to make those programs work. + +%prep +%autosetup +%cargo_prep_online + +%build +%cargo_license_summary_online +%{cargo_license_online} > LICENSE.dependencies + +%install +%cargo_install +ln -s %_bindir/run0-sudo-shim %buildroot%_bindir/sudo + +%files +%doc README.md +%license LICENSE.dependencies +%_bindir/run0-sudo-shim +%_bindir/sudo diff --git a/anda/langs/rust/run0-sudo-shim/update.rhai b/anda/langs/rust/run0-sudo-shim/update.rhai new file mode 100644 index 0000000000..91da40d59f --- /dev/null +++ b/anda/langs/rust/run0-sudo-shim/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("LordGrimmauld/run0-sudo-shim")); diff --git a/anda/langs/rust/starship/rust-starship.spec b/anda/langs/rust/starship/rust-starship.spec index 476004b035..ce8bf337c4 100644 --- a/anda/langs/rust/starship/rust-starship.spec +++ b/anda/langs/rust/starship/rust-starship.spec @@ -4,7 +4,7 @@ %global crate starship Name: rust-starship -Version: 1.23.0 +Version: 1.24.1 Release: 1%?dist Summary: Minimal, blazing-fast, and infinitely customizable prompt for any shell! ☄🌌️ diff --git a/anda/langs/rust/television/rust-television.spec b/anda/langs/rust/television/rust-television.spec index 6a3fe71cf4..eefc9e4a44 100644 --- a/anda/langs/rust/television/rust-television.spec +++ b/anda/langs/rust/television/rust-television.spec @@ -5,7 +5,7 @@ %global crate television Name: rust-television -Version: 0.13.3 +Version: 0.13.10 Release: 1%?dist Summary: Cross-platform, fast and extensible general purpose fuzzy finder TUI diff --git a/anda/langs/rust/typst/rust-typst.spec b/anda/langs/rust/typst/rust-typst.spec index d8633cc5e6..52f3202f05 100644 --- a/anda/langs/rust/typst/rust-typst.spec +++ b/anda/langs/rust/typst/rust-typst.spec @@ -4,8 +4,8 @@ %global crate typst Name: rust-typst -Version: 0.13.1 -Release: 2%?dist +Version: 0.14.0 +Release: 1%?dist Summary: New markup-based typesetting system that is powerful and easy to learn License: Apache-2.0 diff --git a/anda/langs/rust/typstyle/anda.hcl b/anda/langs/rust/typstyle/anda.hcl new file mode 100644 index 0000000000..8ac84d9503 --- /dev/null +++ b/anda/langs/rust/typstyle/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "rust-typstyle.spec" + } +} diff --git a/anda/langs/rust/typstyle/rust-typstyle.spec b/anda/langs/rust/typstyle/rust-typstyle.spec new file mode 100644 index 0000000000..60722a3499 --- /dev/null +++ b/anda/langs/rust/typstyle/rust-typstyle.spec @@ -0,0 +1,64 @@ +# Generated by rust2rpm 27 +%bcond check 1 + +%global crate typstyle + +Name: rust-typstyle +Version: 0.14.0 +Release: 1%?dist +Summary: CLI for Typstyle + +License: Apache-2.0 +URL: https://crates.io/crates/typstyle +Source: %{crates_source} +Source1: https://raw.githubusercontent.com/typstyle-rs/typstyle/v%{version}/LICENSE +Packager: metcya + +BuildRequires: anda-srpm-macros rust-packaging >= 24 mold + +%global _description %{expand: +The CLI for Typstyle.} + +%description %{_description} + +%package -n %{crate} +Summary: %{summary} +License: Apache-2.0 + +%description -n %{crate} %{_description} + +%files -n %{crate} +%license LICENSE +%license LICENSE.dependencies +%doc README.md +%{_bindir}/typstyle + +%pkg_completion -Bzfn %{crate} + +%prep +%autosetup -n %{crate}-%{version} -p1 +cp %{S:1} LICENSE +%cargo_prep_online + +%build +%{cargo_license_summary_online} +%{cargo_license_online} > LICENSE.dependencies +%cargo_build +mkdir -p completions +for shell in bash zsh fish; do + target/rpm/%{crate} completions $shell > completions/%{crate}-completion.$shell +done + +%install +%crate_install_bin +install -Dm644 "completions/%{crate}-completion.bash" "%{buildroot}/%{bash_completions_dir}/%{crate}" +install -Dm644 "completions/%{crate}-completion.zsh" "%{buildroot}/%{zsh_completions_dir}/_%{crate}" +install -Dm644 "completions/%{crate}-completion.fish" "%{buildroot}/%{fish_completions_dir}/%{crate}.fish" + +%if %{with check} +%check +%cargo_test +%endif + +%changelog +%autochangelog diff --git a/anda/langs/rust/typstyle/update.rhai b/anda/langs/rust/typstyle/update.rhai new file mode 100644 index 0000000000..c6e814f121 --- /dev/null +++ b/anda/langs/rust/typstyle/update.rhai @@ -0,0 +1 @@ +rpm.version(crates("typstyle")); diff --git a/anda/langs/rust/usage/rust-usage-cli.spec b/anda/langs/rust/usage/rust-usage-cli.spec index 676da76bb1..eb2188cd1a 100644 --- a/anda/langs/rust/usage/rust-usage-cli.spec +++ b/anda/langs/rust/usage/rust-usage-cli.spec @@ -4,7 +4,7 @@ %global crate usage-cli Name: rust-usage-cli -Version: 2.2.2 +Version: 2.8.0 Release: 1%?dist Summary: CLI for working with usage-based CLIs diff --git a/anda/langs/rust/wild/rust-wild-linker.spec b/anda/langs/rust/wild/rust-wild-linker.spec index 049c86f0d1..e1de259788 100644 --- a/anda/langs/rust/wild/rust-wild-linker.spec +++ b/anda/langs/rust/wild/rust-wild-linker.spec @@ -4,7 +4,7 @@ %global crate wild-linker Name: rust-wild-linker -Version: 0.5.0 +Version: 0.7.0 Release: 1%?dist Summary: Very fast linker for Linux diff --git a/anda/langs/rust/youki/youki.spec b/anda/langs/rust/youki/youki.spec index 75cb7b5f4b..cf8d762238 100644 --- a/anda/langs/rust/youki/youki.spec +++ b/anda/langs/rust/youki/youki.spec @@ -1,5 +1,5 @@ Name: youki -Version: 0.5.5 +Version: 0.5.7 Release: 1%?dist Summary: A container runtime written in Rust diff --git a/anda/langs/rust/zoi/anda.hcl b/anda/langs/rust/zoi/anda.hcl new file mode 100644 index 0000000000..fa1c2c3a2b --- /dev/null +++ b/anda/langs/rust/zoi/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "rust-zoi-rs.spec" + } +} diff --git a/anda/langs/rust/zoi/rust-zoi-rs.spec b/anda/langs/rust/zoi/rust-zoi-rs.spec new file mode 100644 index 0000000000..6332424b73 --- /dev/null +++ b/anda/langs/rust/zoi/rust-zoi-rs.spec @@ -0,0 +1,101 @@ +%define __brp_mangle_shebangs_exclude_from ^/usr/src/.*$ + +%global crate zoi-rs +%global crate_version 1.4.0 + +Name: rust-zoi-rs +Version: %(echo %crate_version | sed 's/-/~/g') +Release: 1%?dist +Summary: Universal Package Manager & Environment Setup Tool +SourceLicense: Apache-2.0 +License: ((Apache-2.0 OR MIT) AND BSD-3-Clause) AND (0BSD OR MIT OR Apache-2.0) AND Apache-2.0 AND (Apache-2.0 AND ISC) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR ISC OR MIT) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND BSD-2-Clause AND BSD-3-Clause AND BSL-1.0 AND CDLA-Permissive-2.0 AND ISC AND LGPL-2.0-or-later AND MIT AND (MIT OR Apache-2.0) AND (MIT OR Apache-2.0 OR LGPL-2.1-or-later) AND (MIT OR Zlib OR Apache-2.0) AND MPL-2.0 AND MPL-2.0+ AND Unicode-3.0 AND (Unlicense OR MIT) AND Zlib +URL: https://crates.io/crates/zoi-rs +Source: %{crates_source %{crate} %{crate_version}} +# Automatically generated patch to strip dependencies and normalize metadata +Patch: zoi-rs-fix-metadata-auto.diff +BuildRequires: cargo +BuildRequires: gcc-c++ +BuildRequires: rpm_macro(cargo_install) +BuildRequires: pkgconfig(openssl) +BuildRequires: perl(FindBin) +BuildRequires: perl(IPC::Cmd) +BuildRequires: perl(File::Compare) +BuildRequires: perl(File::Copy) +BuildRequires: perl(lib) +BuildRequires: perl(Time::Piece) +Packager: madonuko + +%global _description %{expand: +Universal Package Manager & Environment Setup Tool.} + +%description %{_description} + +%package -n %{crate} +Summary: %{summary} +License: ((Apache-2.0 OR MIT) AND BSD-3-Clause) AND (0BSD OR MIT OR Apache-2.0) AND Apache-2.0 AND (Apache-2.0 AND ISC) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR ISC OR MIT) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND BSD-2-Clause AND BSD-3-Clause AND BSL-1.0 AND CDLA-Permissive-2.0 AND ISC AND LGPL-2.0-or-later AND MIT AND (MIT OR Apache-2.0) AND (MIT OR Apache-2.0 OR LGPL-2.1-or-later) AND (MIT OR Zlib OR Apache-2.0) AND MPL-2.0 AND MPL-2.0+ AND Unicode-3.0 AND (Unlicense OR MIT) AND Zlib +# LICENSE.dependencies contains a full license breakdown +Provides: zoi = %evr +Requires: git + +%description -n %{crate} %{_description} + +%files -n %{crate} +%license LICENSE +%license LICENSE.dependencies +%doc CHANGELOG.md +%doc CODE_OF_CONDUCT.md +%doc PACKAGING.md +%doc README.md +%doc RELEASE.md +%doc SECURITY.md +%{_bindir}/zoi + +%pkg_completion -Befz zoi -n %{crate} + +%package devel +Summary: %{summary} +BuildArch: noarch + +%description devel %{_description} + +This package contains library source intended for building other packages which +use the "%{crate}" crate. + +%files devel +%license %{crate_instdir}/LICENSE +%doc %{crate_instdir}/CHANGELOG.md +%doc %{crate_instdir}/CODE_OF_CONDUCT.md +%doc %{crate_instdir}/PACKAGING.md +%doc %{crate_instdir}/README.md +%doc %{crate_instdir}/RELEASE.md +%doc %{crate_instdir}/SECURITY.md +%{crate_instdir}/ + +%package -n %{name}+default-devel +Summary: %{summary} +BuildArch: noarch + +%description -n %{name}+default-devel %{_description} + +This package contains library source intended for building other packages which +use the "default" feature of the "%{crate}" crate. + +%files -n %{name}+default-devel +%ghost %{crate_instdir}/Cargo.toml + +%prep +%autosetup -n %{crate}-%{crate_version} +%cargo_prep_online + +%build +%cargo_license_summary_online +%{cargo_license_online} > LICENSE.dependencies + +%install +%cargo_install + +# skip powershell +"%buildroot%_bindir/zoi" generate-completions bash | install -Dm644 /dev/stdin %buildroot%bash_completions_dir/zoi +"%buildroot%_bindir/zoi" generate-completions elvish | install -Dm644 /dev/stdin %buildroot%elvish_completions_dir/zoi.elv +"%buildroot%_bindir/zoi" generate-completions fish | install -Dm644 /dev/stdin %buildroot%fish_completions_dir/zoi.fish +"%buildroot%_bindir/zoi" generate-completions zsh | install -Dm644 /dev/stdin %buildroot%zsh_completions_dir/_zoi diff --git a/anda/langs/rust/zoi/update.rhai b/anda/langs/rust/zoi/update.rhai new file mode 100644 index 0000000000..bb9c782331 --- /dev/null +++ b/anda/langs/rust/zoi/update.rhai @@ -0,0 +1 @@ +rpm.global("crate_version", crates("zoi-rs")); diff --git a/anda/langs/rust/zoi/zoi-rs-fix-metadata-auto.diff b/anda/langs/rust/zoi/zoi-rs-fix-metadata-auto.diff new file mode 100644 index 0000000000..1d59e54d5b --- /dev/null +++ b/anda/langs/rust/zoi/zoi-rs-fix-metadata-auto.diff @@ -0,0 +1,13 @@ +--- zoi-rs-1.3.1/Cargo.toml 1970-01-01T00:00:01+00:00 ++++ zoi-rs-1.3.1/Cargo.toml 2025-10-31T16:56:25.441725+00:00 +@@ -223,9 +223,7 @@ + [build-dependencies.dotenvy] + version = "0.15.7" + +-[target."cfg(windows)".dependencies.winreg] +-version = "0.55.0" +- + [lints.clippy] + too_many_arguments = "allow" + type_complexity = "allow" ++ diff --git a/anda/langs/vala/vala-language-server-nightly/anda.hcl b/anda/langs/vala/vala-language-server-nightly/anda.hcl index 98ea3d566b..303b1a3e5e 100644 --- a/anda/langs/vala/vala-language-server-nightly/anda.hcl +++ b/anda/langs/vala/vala-language-server-nightly/anda.hcl @@ -3,6 +3,6 @@ project pkg { spec = "vala-language-server-nightly.spec" } labels { - nightly = "1" + nightly = 1 } } diff --git a/anda/langs/vala/vala-language-server-nightly/vala-language-server-nightly.spec b/anda/langs/vala/vala-language-server-nightly/vala-language-server-nightly.spec index df48184a9f..e131cb14eb 100644 --- a/anda/langs/vala/vala-language-server-nightly/vala-language-server-nightly.spec +++ b/anda/langs/vala/vala-language-server-nightly/vala-language-server-nightly.spec @@ -1,9 +1,9 @@ %global real_name vala-language-server -%global commit a5d24a8cf7b61d0d2082234034905f0f8ed96726 +%global commit c66ce433375815fb65d3aefddf68122817c0073d %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global commit_date 20250606 +%global commit_date 20250927 %global snapshot_info %{commit_date}.%{shortcommit} %global verrel 0.48.7 diff --git a/anda/langs/vala/vala-lint-nightly/anda.hcl b/anda/langs/vala/vala-lint-nightly/anda.hcl index 0031911830..d2acc77656 100644 --- a/anda/langs/vala/vala-lint-nightly/anda.hcl +++ b/anda/langs/vala/vala-lint-nightly/anda.hcl @@ -3,6 +3,6 @@ project pkg { spec = "vala-lint-nightly.spec" } labels { - nightly = "1" + nightly = 1 } } diff --git a/anda/langs/vala/vala-nightly/vala-nightly.spec b/anda/langs/vala/vala-nightly/vala-nightly.spec index 4ecdd2b05e..ee4f5b948d 100644 --- a/anda/langs/vala/vala-nightly/vala-nightly.spec +++ b/anda/langs/vala/vala-nightly/vala-nightly.spec @@ -3,11 +3,11 @@ %global priority 90 %global real_name vala -%global commit ba1b29121791c2a2235f33cf87a11563ac7da945 +%global commit d680994c54dd34b8bd3bd808f0023be19ea647da %global shortcommit %(c=%{commit}; echo ${c:0:7}) %global repo https://gitlab.gnome.org/GNOME/%{real_name}.git -%global commit_date 20250806 +%global commit_date 20250903 %global snapshot_info %{commit_date}.%{shortcommit} Name: vala-nightly diff --git a/anda/langs/zig/bootstrap/zig-master-bootstrap.spec b/anda/langs/zig/bootstrap/zig-master-bootstrap.spec index b32891c43c..b8269b72b9 100644 --- a/anda/langs/zig/bootstrap/zig-master-bootstrap.spec +++ b/anda/langs/zig/bootstrap/zig-master-bootstrap.spec @@ -7,7 +7,7 @@ %define llvm_compat 20 %endif %global llvm_version 20.0.0 -%global ver 0.16.0-dev.70+73a0b5441 +%global ver 0.16.0-dev.1366+4ea472808 %bcond bootstrap 1 %bcond docs %{without bootstrap} %bcond test 1 diff --git a/anda/langs/zig/master/zig-master.spec b/anda/langs/zig/master/zig-master.spec index 032e77ce59..5f23005fbd 100644 --- a/anda/langs/zig/master/zig-master.spec +++ b/anda/langs/zig/master/zig-master.spec @@ -15,7 +15,7 @@ %global mirror_url %(mirrors=%{zig_mirrors}; index=$(( RANDOM % ${#mirrors[@]} )); echo ${mirrors[$index]}) Name: zig-master -Version: 0.16.0~dev.70+73a0b5441 +Version: 0.16.0~dev.1366+4ea472808 Release: 1%?dist Summary: Master builds of the Zig language License: MIT AND NCSA AND LGPL-2.1-or-later AND LGPL-2.1-or-later WITH GCC-exception-2.0 AND GPL-2.0-or-later AND GPL-2.0-or-later WITH GCC-exception-2.0 AND BSD-3-Clause AND Inner-Net-2.0 AND ISC AND LicenseRef-Fedora-Public-Domain AND GFDL-1.1-or-later AND ZPL-2.1 diff --git a/anda/lib/ShivaVG/ShivaVG.spec b/anda/lib/ShivaVG/ShivaVG.spec new file mode 100644 index 0000000000..569186b624 --- /dev/null +++ b/anda/lib/ShivaVG/ShivaVG.spec @@ -0,0 +1,59 @@ +%global commit 35e58010f3662b21b6632bbe55988dc18070534c +%global commit_date 20211031 +%global shortcommit %{sub %{commit} 1 7} + +Name: ShivaVG +Version: 0~%{commit_date}git.%shortcommit +Release: 1%{?dist} +Summary: An open-source LGPL ANSI C implementation of the Khronos Group OpenVG specification + +License: LGPL-2.1-or-later +URL: https://github.com/vpxyz/ShivaVG +Source0: %{url}/archive/%{commit}/ShivaVG-%{commit}.tar.gz + +BuildRequires: cmake +BuildRequires: gcc +BuildRequires: glew-devel +BuildRequires: mesa-libGL-devel +BuildRequires: freeglut-devel +BuildRequires: libjpeg-turbo-devel +BuildRequires: pkgconfig + +%description +ShivaVG is an open-source LGPL ANSI C implementation of the Khronos Group OpenVG specification. +OpenVG is an royalty-free, cross-platform API that provides a low-level hardware acceleration +interface for vector graphics and imaging applications. + +%package devel +Requires: %{name} = %evr +Requires: glew-devel +Requires: mesa-libGL-devel +%pkg_devel_files +%_libdir/cmake/OpenVG/ + +%package static +Requires: %{name} = %evr +%pkg_static_files + +%prep +%autosetup -n ShivaVG-%{commit} +sed '/set(CMAKE_C_FLAGS/d' -i CMakeLists.txt + +%build +%cmake -DBUILD_EXAMPLES=OFF -DDEBUG=ON -DPROJECT_VERSION=%commit -DCMAKE_C_FLAGS='%build_cflags' +%cmake_build + +%install +%cmake_install + +%files +%license COPYING +%doc README.md + +%changelog +* Wed Aug 27 2025 Ruka - 20211031.35e5801-1 +- Set up auto-update mechanism using commit-based versioning +- Added license and documentation files + +* Mon Aug 25 2025 Ruka - 0.1.35e5801-1 +- Initial packaging for Terra PKG diff --git a/anda/lib/ShivaVG/anda.hcl b/anda/lib/ShivaVG/anda.hcl new file mode 100644 index 0000000000..e06d003706 --- /dev/null +++ b/anda/lib/ShivaVG/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "ShivaVG.spec" + } +} diff --git a/anda/lib/ShivaVG/update.rhai.bak b/anda/lib/ShivaVG/update.rhai.bak new file mode 100644 index 0000000000..2306208283 --- /dev/null +++ b/anda/lib/ShivaVG/update.rhai.bak @@ -0,0 +1,5 @@ +rpm.global("commit", gh_commit("vpxyz/ShivaVG")); +if rpm.changed() { + rpm.release(); + rpm.global("commit_date", date()); +} diff --git a/anda/lib/apparmor/apparmor.spec b/anda/lib/apparmor/apparmor.spec index f913501fc6..efa2caf5f2 100644 --- a/anda/lib/apparmor/apparmor.spec +++ b/anda/lib/apparmor/apparmor.spec @@ -6,7 +6,7 @@ %bcond_with tests Name: apparmor -Version: 5.0.0~alpha1 +Version: 5.0.0~alpha3 Release: 1%?dist Summary: AppArmor userspace components diff --git a/anda/lib/astal/ags/ags.spec b/anda/lib/astal/ags/ags.spec index 83a419872a..7e6cb42bef 100644 --- a/anda/lib/astal/ags/ags.spec +++ b/anda/lib/astal/ags/ags.spec @@ -12,7 +12,7 @@ # https://github.com/Aylur/ags %global goipath github.com/Aylur/ags -Version: 2.3.0 +Version: 3.0.0 %gometa -f @@ -23,7 +23,7 @@ Scaffolding CLI for Astal+TypeScript.} %global godocs docs README.md Name: ags -Release: 2%?dist +Release: 1%?dist Summary: Scaffolding CLI for Astal+TypeScript License: GPL-3.0-only diff --git a/anda/lib/astal/astal-gtk/astal-gtk.spec b/anda/lib/astal/astal-gtk/astal-gtk.spec index 76d9f3f4d0..ab2a98de71 100644 --- a/anda/lib/astal/astal-gtk/astal-gtk.spec +++ b/anda/lib/astal/astal-gtk/astal-gtk.spec @@ -1,6 +1,6 @@ -%global commit 20bd8318e4136fbd3d4eb2d64dbabc3acbc915dd -%global shortcommit 20bd831 -%global commit_date 20250830 +%global commit 5baeb660214bcafc9ae0b733a1bc84f5fa6078f4 +%global shortcommit 5baeb66 +%global commit_date 20251108 Name: astal Version: 0^%commit_date.%commit diff --git a/anda/lib/astal/astal/astal.spec b/anda/lib/astal/astal/astal.spec index 05e9937caf..cb6084b1cf 100644 --- a/anda/lib/astal/astal/astal.spec +++ b/anda/lib/astal/astal/astal.spec @@ -1,7 +1,7 @@ -%global commit 20bd8318e4136fbd3d4eb2d64dbabc3acbc915dd +%global commit 5baeb660214bcafc9ae0b733a1bc84f5fa6078f4 %global shortcommit %{sub %commit 1 7} -%global commit_date 20250830 +%global commit_date 20251108 Name: astal Version: 0^%commit_date.%shortcommit diff --git a/anda/lib/backtrace/libbacktrace-nightly.spec b/anda/lib/backtrace/libbacktrace-nightly.spec index f60702c1c4..97bfcf26d3 100644 --- a/anda/lib/backtrace/libbacktrace-nightly.spec +++ b/anda/lib/backtrace/libbacktrace-nightly.spec @@ -1,8 +1,8 @@ %global debug_package %nil -%global commit 793921876c981ce49759114d7bb89bb89b2d3a2d +%global commit b9e40069c0b47a722286b94eb5231f7f05c08713 %global shortcommit %(c=%commit; echo ${c:0:7}) -%global commit_date 20250411 +%global commit_date 20251107 %global _desc %{expand: A C library that may be linked into a C/C++ program to produce symbolic backtraces. diff --git a/anda/lib/deviceinfo/deviceinfo.spec b/anda/lib/deviceinfo/deviceinfo.spec index bf9aabb0ab..a60e87c428 100644 --- a/anda/lib/deviceinfo/deviceinfo.spec +++ b/anda/lib/deviceinfo/deviceinfo.spec @@ -1,9 +1,9 @@ %global forgeurl https://gitlab.com/ubports/development/core/deviceinfo -%global commit 4423aab5a9f25ac1f6baf0623c7cf7a040d254ff +%global commit 41a4e2b50c18a4650cd3c3dae83cce72017fa74b %forgemeta Name: deviceinfo -Version: 0.2.3 +Version: 0.2.4 Release: 1%?dist Summary: Library to detect and configure devices License: GPLv3+ diff --git a/anda/lib/dwarfs/dwarfs.spec b/anda/lib/dwarfs/dwarfs.spec index 3510673a1d..4ef43f812a 100644 --- a/anda/lib/dwarfs/dwarfs.spec +++ b/anda/lib/dwarfs/dwarfs.spec @@ -4,8 +4,8 @@ The Deduplicating Warp-speed Advanced Read-only File System. A fast high compression read-only file system for Linux and Windows.} Name: dwarfs -Version: 0.13.0 -Release: 1%?dist +Version: 0.14.1 +Release: 4%?dist Summary: A fast high compression read-only file system for Linux, Windows and macOS License: GPL-3.0-or-later URL: https://github.com/mhx/%{name} @@ -40,7 +40,7 @@ BuildRequires: git BuildRequires: glog-devel BuildRequires: gmock-devel BuildRequires: google-benchmark-devel -BuildRequires: gtest-devel +BuildRequires: gtest-devel BuildRequires: jemalloc-devel BuildRequires: json-devel BuildRequires: libacl-devel @@ -75,6 +75,27 @@ Requires: %{name} %description devel This package contains the development files for DWARFS. +%package bash-completion +Summary: dwarfs Bash completion +Requires: %{name} +Requires: bash +Requires: bash-completion +Supplements: (%{name} and bash) +BuildArch: noarch + +%description bash-completion +Bash shell completion for dwarfs. + +%package zsh-completion +Summary: dwarfs Zsh completion +Requires: %{name} +Requires: zsh +Supplements: (%{name} and zsh) +BuildArch: noarch + +%description zsh-completion +Zsh shell completion for dwarfs. + %prep %autosetup @@ -85,9 +106,13 @@ This package contains the development files for DWARFS. -DWITH_FUSE_DRIVER=ON \ -DBUILD_SHARED_LIBS=ON \ -DWITH_MAN_OPTION=OFF \ --DCMAKE_INSTALL_SBINDIR=%{_sbindir} \ -%cmake_build -%ctest -j +-DCMAKE_INSTALL_SBINDIR=%(echo %{_sbindir} | sed 's|^/usr||') \ +%ifarch aarch64 +-DCMAKE_C_FLAGS="-fno-lto -fno-use-linker-plugin" \ +-DCMAKE_CXX_FLAGS="-fno-lto -fno-use-linker-plugin" \ +-DCMAKE_SHARED_LINKER_FLAGS="-fno-lto -fno-use-linker-plugin" \ +%endif +%cmake_build %install %cmake_install @@ -96,25 +121,48 @@ This package contains the development files for DWARFS. %doc README.md %doc CHANGES.md %license LICENSE -%{_bindir}/dwarfsck -%{_bindir}/dwarfsextract -%{_bindir}/mkdwarfs -%{_sbindir}/dwarfs -%{_sbindir}/mount.dwarfs -%{_libdir}/libdwarfs_*.so.* -%{_mandir}/man1/dwarfs.1* -%{_mandir}/man1/dwarfsck.1* -%{_mandir}/man1/dwarfsextract.1* -%{_mandir}/man1/mkdwarfs.1* -%{_mandir}/man5/dwarfs-format.5* +%{_bindir}/%{name} +%{_bindir}/%{name}ck +%{_bindir}/%{name}extract +%{_bindir}/mk%{name} +%{_sbindir}/mount.%{name} +%{_libdir}/lib%{name}_*.so.* +%{_mandir}/man1/%{name}.1* +%{_mandir}/man1/%{name}ck.1* +%{_mandir}/man1/%{name}extract.1* +%{_mandir}/man1/mk%{name}.1* +%{_mandir}/man5/%{name}-format.5* +%{_mandir}/man7/%{name}-env.7* +%{_datadir}/applications/%{name}-mount-handler.desktop +%{_datadir}/mime/packages/%{name}.xml %files devel -%dir %{_libdir}/cmake/dwarfs -%{_libdir}/cmake/dwarfs/*.cmake -%{_libdir}/libdwarfs_*.so -%{_includedir}/dwarfs/*.h -%{_includedir}/dwarfs/*/*.h +%dir %{_libdir}/cmake/%{name} +%{_libdir}/cmake/%{name}/*.cmake +%{_libdir}/lib%{name}_*.so +%{_includedir}/%{name}/*.h +%{_includedir}/%{name}/*/*.h +%{_includedir}/%{name}/*/*/*.h + +%files bash-completion +%{bash_completions_dir}/%{name} +%{bash_completions_dir}/%{name}ck +%{bash_completions_dir}/%{name}extract +%{bash_completions_dir}/mk%{name} + +%files zsh-completion +%{zsh_completions_dir}/_%{name} +%{zsh_completions_dir}/_%{name}ck +%{zsh_completions_dir}/_%{name}extract +%{zsh_completions_dir}/_mk%{name} %changelog +* Sat Nov 08 2025 Owen Zimmerman +- Create shell completion subpackages + +* Fri Nov 07 2025 A. Garcia +- Fix up INSTALL_SBINDIR path with duplicated /usr +- Add missing installed files to the package + * Thu Mar 20 2025 Gilver E. - Initial package diff --git a/anda/lib/fdk-aac/anda.hcl b/anda/lib/fdk-aac/anda.hcl index 06dac1bc18..27b2e29124 100644 --- a/anda/lib/fdk-aac/anda.hcl +++ b/anda/lib/fdk-aac/anda.hcl @@ -3,7 +3,7 @@ project pkg { spec = "fdk-aac.spec" } labels { - subrepo = "extras" + subrepo = "multimedia" weekly = 1 } } diff --git a/anda/lib/libde265/anda.hcl b/anda/lib/libde265/anda.hcl index cc0f1db0fd..f1ca67f6cb 100644 --- a/anda/lib/libde265/anda.hcl +++ b/anda/lib/libde265/anda.hcl @@ -2,8 +2,10 @@ project pkg { arches = ["x86_64", "aarch64", "i386"] rpm { spec = "libde265.spec" + extra_repos = ["https://repos.fyralabs.com/terrarawhide-multimedia"] } labels { mock = 1 + subrepo = "multimedia" } } diff --git a/anda/lib/libfreeaptx/anda.hcl b/anda/lib/libfreeaptx/anda.hcl index bac6cc9f1b..1c0f5d7f4e 100644 --- a/anda/lib/libfreeaptx/anda.hcl +++ b/anda/lib/libfreeaptx/anda.hcl @@ -6,5 +6,6 @@ project pkg { labels { weekly = 1 mock = 1 + subrepo = "multimedia" } } diff --git a/anda/lib/libhelium/libhelium.spec b/anda/lib/libhelium/libhelium.spec index 6048fbdbf1..70fc2daa80 100644 --- a/anda/lib/libhelium/libhelium.spec +++ b/anda/lib/libhelium/libhelium.spec @@ -1,4 +1,4 @@ -%global ver 1.8.54 +%global ver 1.8.71 %global sanitized_ver %(echo %{ver} | sed -E 's/-/~/g') Summary: The Application Framework for tauOS apps Name: libhelium diff --git a/anda/lib/lsp-dsp/liblsp-dsp.spec b/anda/lib/lsp-dsp/liblsp-dsp.spec index 488e144b11..5fa7fbbd9f 100644 --- a/anda/lib/lsp-dsp/liblsp-dsp.spec +++ b/anda/lib/lsp-dsp/liblsp-dsp.spec @@ -3,7 +3,7 @@ #define _empty_manifest_terminate_build 0 Name: liblsp-dsp -Version: 1.0.31 +Version: 1.0.32 Release: 1%?dist Summary: DSP library for signal processing License: LGPL-3.0 diff --git a/anda/lib/mesa-compat/mesa-compat.spec b/anda/lib/mesa-compat/mesa-compat.spec index eb20fbcd17..21207eccf4 100644 --- a/anda/lib/mesa-compat/mesa-compat.spec +++ b/anda/lib/mesa-compat/mesa-compat.spec @@ -1,9 +1,8 @@ -# Credit to LionHeartP from Nobara for most of the spec and letting me know about the need for this package <3 %global origname mesa -%global ver 25.0.4 Name: %{origname}-compat Summary: Mesa graphics libraries - legacy compatibility libraries +%global ver 25.0.7 Version: %{lua:ver = string.gsub(rpm.expand("%{ver}"), "-", "~"); print(ver)} Release: 1%{?dist} Epoch: 1 @@ -41,6 +40,23 @@ BuildRequires: python3-pyyaml %description %{summary}. +%package libxatracker +Summary: Mesa XA state tracker +Provides: libxatracker%{?_isa} +Provides: mesa-libxatracker%{?_isa} +Obsoletes: mesa-libxatracker < 25.3 + +%description libxatracker +%{summary}. + +%package libxatracker-devel +Summary: Mesa XA state tracker development package +Requires: %{name}-libxatracker%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +Obsoletes: mesa-libxatracker-devel < 25.3 + +%description libxatracker-devel +%{summary}. + %package libOSMesa Summary: Mesa offscreen rendering libraries Provides: libOSMesa @@ -73,10 +89,10 @@ cp %{SOURCE1} docs/ %meson \ -Dplatforms= \ -Dosmesa=true \ - -Dgallium-drivers=llvmpipe \ + -Dgallium-drivers=llvmpipe,svga \ -Dgallium-vdpau=disabled \ -Dgallium-va=disabled \ - -Dgallium-xa=disabled \ + -Dgallium-xa=enabled \ -Dgallium-nine=false \ -Dgallium-opencl=disabled \ -Dgallium-rusticl=false \ @@ -121,6 +137,16 @@ rm -rf %{buildroot}%{_includedir}/KHR %{_libdir}/libOSMesa.so %{_libdir}/pkgconfig/osmesa.pc +%files libxatracker +%{_libdir}/libxatracker.so.2* +%{_libdir}/libxatracker.so.2.* + +%files libxatracker-devel +%{_libdir}/libxatracker.so +%{_includedir}/xa_tracker.h +%{_includedir}/xa_composite.h +%{_includedir}/xa_context.h +%{_libdir}/pkgconfig/xatracker.pc + %changelog -* Thu Apr 24 2025 Neal Gompa - 25.0.4-1 -- Initial split from mesa for compat libraries (rhbz#2362203) +%autochangelog diff --git a/anda/lib/mesa/mesa.spec b/anda/lib/mesa/mesa.spec index 8e59cdfd90..d09b3c8cb8 100644 --- a/anda/lib/mesa/mesa.spec +++ b/anda/lib/mesa/mesa.spec @@ -32,7 +32,7 @@ %global intel_platform_vulkan %{?with_vulkan_hw:,intel,intel_hasvk}%{!?with_vulkan_hw:%{nil}} %if !0%{?rhel} %global with_i915 1 -%endif +%endif %endif %ifarch x86_64 %if !0%{?with_vulkan_hw} @@ -79,8 +79,8 @@ Summary: Mesa graphics libraries # This should not break anything by default as the Mesa stream is ***EXPLICITLY*** # disabled by default, and has to be enabled manually. See `terra/release/terra-mesa.repo` for details. Epoch: 1 -Version: 25.2.1 -Release: 4%?dist +Version: 25.3.0 +Release: 1%?dist License: MIT AND BSD-3-Clause AND SGI-B-2.0 URL: http://www.mesa3d.org @@ -94,6 +94,7 @@ Patch10: gnome-shell-glthread-disable.patch # https://github.com/bazzite-org/mesa Patch20: bazzite.patch +Patch21: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37498.diff BuildRequires: meson >= 1.3.0 BuildRequires: gcc @@ -189,7 +190,7 @@ BuildRequires: pkgconfig(vulkan) %endif %if 0%{?with_d3d12} BuildRequires: pkgconfig(DirectX-Headers) >= 1.614.1 -%endif +%endif %description %{summary}. @@ -198,6 +199,9 @@ BuildRequires: pkgconfig(DirectX-Headers) >= 1.614.1 Summary: Mesa driver filesystem Provides: mesa-dri-filesystem = %{?epoch:%{epoch}:}%{version}-%{release} Obsoletes: mesa-omx-drivers < %{?epoch:%{epoch}:}%{version}-%{release} +Obsoletes: mesa-libd3d < %{?epoch:%{epoch}:}%{version}-%{release} +Obsoletes: mesa-libd3d-devel < %{?epoch:%{epoch}:}%{version}-%{release} +Obsoletes: mesa-vdpau-drivers < %{?epoch:%{epoch}:}%{version}-%{release} %description filesystem %{summary}. @@ -324,29 +328,20 @@ Summary: Mesa TensorFlow Lite delegate %endif %if 0%{?with_d3d12} -%package dxil +%package dxil-devel Summary: Mesa SPIR-V to DXIL binary Requires: %{name}-filesystem%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +Obsoletes: %{name}-dxil-libs < 1:25.2.3-2 +Obsoletes: %{name}-dxil < 1:25.2.3-2 -%description dxil -Binary for translating SPIR-V shader code to DXIL for Direct3D 12 - -%package dxil-libs -Summary: Mesa SPIR-V to DXIL libraries -Requires: %{name}-filesystem%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} -Requires: %{name}-dxil = %{?epoch:%{epoch}:}%{version}-%{release} - -%description dxil-libs -Libraries for translating SPIR-V shader code to DXIL for Direct3D 12 +%description dxil-devel +Development tools for translating SPIR-V shader code to DXIL for Direct3D 12 %endif %package vulkan-drivers Summary: Mesa Vulkan drivers Requires: vulkan%{_isa} Requires: %{name}-filesystem%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} -%if 0%{?with_d3d12} -Requires: %{name}-dxil-libs%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} -%endif Obsoletes: mesa-vulkan-devel < %{?epoch:%{epoch}:}%{version}-%{release} %description vulkan-drivers @@ -520,7 +515,7 @@ popd %{_libdir}/dri/iris_dri.so %if 0%{?with_i915} %{_libdir}/dri/i915_dri.so -%endif +%endif %endif %ifarch aarch64 x86_64 %{ix86} %if 0%{?with_asahi} @@ -529,7 +524,7 @@ popd %endif %if 0%{?with_d3d12} %{_libdir}/dri/d3d12_dri.so -%endif +%endif %{_libdir}/dri/ingenic-drm_dri.so %{_libdir}/dri/imx-drm_dri.so %{_libdir}/dri/imx-lcdif_dri.so @@ -612,7 +607,7 @@ popd %endif %if 0%{?with_d3d12} %{_libdir}/dri/d3d12_drv_video.so -%endif +%endif %{_libdir}/dri/virtio_gpu_drv_video.so %endif @@ -628,14 +623,13 @@ popd %endif %if 0%{?with_d3d12} %{_libdir}/vdpau/libvdpau_d3d12.so.1* -%endif +%endif %{_libdir}/vdpau/libvdpau_virtio_gpu.so.1* %endif %if 0%{?with_d3d12} -%files dxil +%files dxil-devel %{_bindir}/spirv2dxil -%files dxil-libs %{_libdir}/libspirv_to_dxil.a %{_libdir}/libspirv_to_dxil.so %endif @@ -650,7 +644,7 @@ popd %if 0%{?with_virtio} %{_libdir}/libvulkan_virtio.so %{_datadir}/vulkan/icd.d/virtio_icd.*.json -%endif +%endif %if 0%{?with_vulkan_hw} %{_libdir}/libvulkan_radeon.so %{_datadir}/drirc.d/00-radv-defaults.conf diff --git a/anda/lib/nvidia/cuda-cccl/cuda-cccl.spec b/anda/lib/nvidia/cuda-cccl/cuda-cccl.spec index e7753e6819..0a515f0dea 100644 --- a/anda/lib/nvidia/cuda-cccl/cuda-cccl.spec +++ b/anda/lib/nvidia/cuda-cccl/cuda-cccl.spec @@ -1,12 +1,12 @@ %global real_name cuda_cccl %global debug_package %{nil} -%global major_package_version 12-8 +%global major_package_version 13-0 Name: %(echo %real_name | tr '_' '-') Epoch: 1 -Version: 13.0.50 -Release: 1%?dist +Version: 13.0.85 +Release: 3%{?dist} Summary: CXX Core Compute Libraries License: CUDA Toolkit URL: https://developer.nvidia.com/cuda-toolkit @@ -41,8 +41,6 @@ mkdir -p %{buildroot}%{_includedir} mkdir -p %{buildroot}%{_libdir}/cmake cp -fr include/* %{buildroot}%{_includedir}/ -# Conflict with rocthrust-devel in main repositories: -mv %{buildroot}%{_includedir}/thrust %{buildroot}%{_includedir}/cuda/ cp -fr lib/cmake/* %{buildroot}%{_libdir}/cmake rm -f %{buildroot}%{_libdir}/cmake/thrust/README.md @@ -55,4 +53,3 @@ rm -f %{buildroot}%{_libdir}/cmake/thrust/README.md %changelog %autochangelog - diff --git a/anda/lib/nvidia/cuda-cudart/cuda-cudart.spec b/anda/lib/nvidia/cuda-cudart/cuda-cudart.spec index 72d0491370..bf4f03ec45 100644 --- a/anda/lib/nvidia/cuda-cudart/cuda-cudart.spec +++ b/anda/lib/nvidia/cuda-cudart/cuda-cudart.spec @@ -8,7 +8,7 @@ Name: %(echo %real_name | tr '_' '-') Epoch: 1 -Version: 13.0.48 +Version: 13.0.96 Release: 1%?dist Summary: CUDA Runtime API library License: CUDA Toolkit @@ -74,7 +74,6 @@ sed -i \ %{_includedir}/* %{_libdir}/libcudadevrt.a %{_libdir}/libcudart.so -%{_libdir}/libculibos.a %{_libdir}/pkgconfig/cudart.pc %files static diff --git a/anda/lib/nvidia/cuda-cudnn/cuda-cudnn.spec b/anda/lib/nvidia/cuda-cudnn/cuda-cudnn.spec index 89d1ee64ad..a903c010d2 100644 --- a/anda/lib/nvidia/cuda-cudnn/cuda-cudnn.spec +++ b/anda/lib/nvidia/cuda-cudnn/cuda-cudnn.spec @@ -5,7 +5,7 @@ %global cuda_version 12 Name: cuda-cudnn -Version: 9.12.0.46 +Version: 9.16.0.29 Release: 1%?dist Epoch: 1 Summary: NVIDIA CUDA Deep Neural Network library (cuDNN) diff --git a/anda/lib/nvidia/cuda-culibos/anda.hcl b/anda/lib/nvidia/cuda-culibos/anda.hcl new file mode 100644 index 0000000000..8c787e7bf9 --- /dev/null +++ b/anda/lib/nvidia/cuda-culibos/anda.hcl @@ -0,0 +1,9 @@ +project pkg { + rpm { + spec = "cuda-culibos.spec" + } + labels { + subrepo = "nvidia" + updbranch = 1 + } +} diff --git a/anda/lib/nvidia/cuda-culibos/cuda-culibos.spec b/anda/lib/nvidia/cuda-culibos/cuda-culibos.spec new file mode 100644 index 0000000000..fdf75c6cdd --- /dev/null +++ b/anda/lib/nvidia/cuda-culibos/cuda-culibos.spec @@ -0,0 +1,43 @@ +%global real_name cuda_culibos + +%global debug_package %{nil} +%global __strip /bin/true +%global _missing_build_ids_terminate_build 0 +%global _build_id_links none +%global major_package_version 13-0 + +Name: %(echo %real_name | tr '_' '-')-devel +Epoch: 1 +Version: 13.0.85 +Release: 1%{?dist} +Summary: CUDA Culibos Math development library +License: CUDA Toolkit +URL: https://developer.nvidia.com/cuda-toolkit +ExclusiveArch: x86_64 aarch64 + +Source0: https://developer.download.nvidia.com/compute/cuda/redist/%{real_name}/linux-x86_64/%{real_name}-linux-x86_64-%{version}-archive.tar.xz +Source1: https://developer.download.nvidia.com/compute/cuda/redist/%{real_name}/linux-sbsa/%{real_name}-linux-sbsa-%{version}-archive.tar.xz + +Conflicts: %{name}-%{major_package_version} < %{?epoch:%{epoch}:}%{version}-%{release} + +%description +CUDA CULIBOS is a Math Libraries fork of the cuos library. + +%prep +%ifarch x86_64 +%setup -q -n %{real_name}-linux-x86_64-%{version}-archive +%endif + +%ifarch aarch64 +%setup -q -T -b 1 -n %{real_name}-linux-sbsa-%{version}-archive +%endif + +%install +install -p -m 0755 -D lib/libculibos.a %{buildroot}%{_libdir}/libculibos.a + +%files +%license LICENSE +%{_libdir}/libculibos.a + +%changelog +%autochangelog diff --git a/anda/lib/nvidia/cuda-culibos/update.rhai b/anda/lib/nvidia/cuda-culibos/update.rhai new file mode 100644 index 0000000000..6fa6263995 --- /dev/null +++ b/anda/lib/nvidia/cuda-culibos/update.rhai @@ -0,0 +1,3 @@ +import "andax/nvidia.rhai" as nvidia; + +rpm.version(nvidia::nvidia_component_version("cuda_culibos")); diff --git a/anda/lib/nvidia/cuda-cuobjdump/cuda-cuobjdump.spec b/anda/lib/nvidia/cuda-cuobjdump/cuda-cuobjdump.spec index 255ef1e2dd..eb8e797f54 100644 --- a/anda/lib/nvidia/cuda-cuobjdump/cuda-cuobjdump.spec +++ b/anda/lib/nvidia/cuda-cuobjdump/cuda-cuobjdump.spec @@ -4,12 +4,12 @@ %global __strip /bin/true %global _missing_build_ids_terminate_build 0 %global _build_id_links none -%global major_package_version 12-8 +%global major_package_version 13-0 Name: %(echo %real_name | tr '_' '-') Epoch: 1 -Version: 13.0.39 -Release: 1%?dist +Version: 13.0.85 +Release: 1%{?dist} Summary: Utility to extract information from CUDA binary files License: CUDA Toolkit URL: https://developer.nvidia.com/cuda-toolkit @@ -45,4 +45,3 @@ install -m 0755 -p -D bin/cuobjdump %{buildroot}%{_bindir}/cuobjdump %changelog %autochangelog - diff --git a/anda/lib/nvidia/cuda-cupti/cuda-cupti.spec b/anda/lib/nvidia/cuda-cupti/cuda-cupti.spec index bcb7d43538..a62ac6afaa 100644 --- a/anda/lib/nvidia/cuda-cupti/cuda-cupti.spec +++ b/anda/lib/nvidia/cuda-cupti/cuda-cupti.spec @@ -8,8 +8,8 @@ Name: %(echo %real_name | tr '_' '-') Epoch: 1 -Version: 13.0.48 -Release: 1%?dist +Version: 13.0.85 +Release: 1%{?dist} Summary: NVIDIA CUDA Profiling Tools Interface (CUPTI) library License: CUDA Toolkit URL: https://developer.nvidia.com/cuda-toolkit @@ -78,4 +78,3 @@ cp -fr lib/* %{buildroot}%{_libdir}/ %changelog %autochangelog - diff --git a/anda/lib/nvidia/cuda-cuxxfilt/cuda-cuxxfilt.spec b/anda/lib/nvidia/cuda-cuxxfilt/cuda-cuxxfilt.spec index 8b7568eefe..a66ca87992 100644 --- a/anda/lib/nvidia/cuda-cuxxfilt/cuda-cuxxfilt.spec +++ b/anda/lib/nvidia/cuda-cuxxfilt/cuda-cuxxfilt.spec @@ -4,12 +4,12 @@ %global __strip /bin/true %global _missing_build_ids_terminate_build 0 %global _build_id_links none -%global major_package_version 12-8 +%global major_package_version 13-0 Name: %(echo %real_name | tr '_' '-') Epoch: 1 -Version: 13.0.39 -Release: 1%?dist +Version: 13.0.85 +Release: 1%{?dist} Summary: CUDA cuxxfilt (demangler) License: CUDA Toolkit URL: https://developer.nvidia.com/cuda-toolkit @@ -50,4 +50,3 @@ install -m 0644 -p -D lib/libcufilt.a %{buildroot}%{_libdir}/libcufilt.a %changelog %autochangelog - diff --git a/anda/lib/nvidia/cuda-gdb/cuda-gdb.spec b/anda/lib/nvidia/cuda-gdb/cuda-gdb.spec index 47beed4bd0..905c95bafe 100644 --- a/anda/lib/nvidia/cuda-gdb/cuda-gdb.spec +++ b/anda/lib/nvidia/cuda-gdb/cuda-gdb.spec @@ -3,12 +3,12 @@ %global __strip /bin/true %global _missing_build_ids_terminate_build 0 %global _build_id_links none -%global major_package_version 12-8 +%global major_package_version 13-0 Name: %(echo %real_name | tr '_' '-') Epoch: 1 -Version: 13.0.39 -Release: 1%?dist +Version: 13.0.85 +Release: 1%{?dist} Summary: CUDA GDB License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and LGPLv3+ and BSD and Public Domain and GFDL URL: https://developer.nvidia.com/cuda-toolkit @@ -17,6 +17,7 @@ ExclusiveArch: x86_64 aarch64 Source0: https://developer.download.nvidia.com/compute/cuda/redist/%{real_name}/linux-x86_64/%{real_name}-linux-x86_64-%{version}-archive.tar.xz Source1: https://developer.download.nvidia.com/compute/cuda/redist/%{real_name}/linux-sbsa/%{real_name}-linux-sbsa-%{version}-archive.tar.xz +BuildRequires: chrpath Requires: gdb Conflicts: %{name}-%{major_package_version} < %{?epoch:%{epoch}:}%{version}-%{release} @@ -36,16 +37,14 @@ simulation and emulation environments. %setup -q -T -b 1 -n %{real_name}-linux-sbsa-%{version}-archive %endif +chrpath -d bin/cuda-gdb-minimal + %install mkdir -p %{buildroot}%{_datadir}/%{name} mkdir -p %{buildroot}%{_includedir} mkdir -p %{buildroot}%{_libdir} -%ifarch x86_64 install -p -m 0755 -D bin/cuda-gdb-minimal %{buildroot}%{_bindir}/cuda-gdb -%else -install -p -m 0755 -D bin/cuda-gdb %{buildroot}%{_bindir}/cuda-gdb -%endif install -p -m 0755 -D bin/cuda-gdbserver %{buildroot}%{_bindir}/cuda-gdbserver cp -f extras/Debugger/include/* %{buildroot}%{_includedir}/ diff --git a/anda/lib/nvidia/cuda-nvdisasm/cuda-nvdisasm.spec b/anda/lib/nvidia/cuda-nvdisasm/cuda-nvdisasm.spec index 5b9dad707f..3d435bffc1 100644 --- a/anda/lib/nvidia/cuda-nvdisasm/cuda-nvdisasm.spec +++ b/anda/lib/nvidia/cuda-nvdisasm/cuda-nvdisasm.spec @@ -4,12 +4,12 @@ %global __strip /bin/true %global _missing_build_ids_terminate_build 0 %global _build_id_links none -%global major_package_version 12-8 +%global major_package_version 13-0 Name: %(echo %real_name | tr '_' '-') Epoch: 1 -Version: 13.0.39 -Release: 1%?dist +Version: 13.0.85 +Release: 1%{?dist} Summary: Utility to extract information from CUDA binary files License: CUDA Toolkit URL: https://developer.nvidia.com/cuda-toolkit @@ -19,7 +19,7 @@ Source0: https://developer.download.nvidia.com/compute/cuda/redist/%{real Source1: https://developer.download.nvidia.com/compute/cuda/redist/%{real_name}/linux-sbsa/%{real_name}-linux-sbsa-%{version}-archive.tar.xz Conflicts: %{name}-%{major_package_version} < %{?epoch:%{epoch}:}%{version}-%{release} - + %description nvdisasm extracts information from standalone cubin files and presents them in human readable format. The output of nvdisasm includes CUDA assembly code for @@ -46,4 +46,3 @@ install -m 0755 -p -D bin/nvdisasm %{buildroot}%{_bindir}/nvdisasm %changelog %autochangelog - diff --git a/anda/lib/nvidia/cuda-nvml/cuda-nvml.spec b/anda/lib/nvidia/cuda-nvml/cuda-nvml.spec index c582f736e6..ade5cc518e 100644 --- a/anda/lib/nvidia/cuda-nvml/cuda-nvml.spec +++ b/anda/lib/nvidia/cuda-nvml/cuda-nvml.spec @@ -4,12 +4,12 @@ %global __strip /bin/true %global _missing_build_ids_terminate_build 0 %global _build_id_links none -%global major_package_version 12-8 +%global major_package_version 13-0 Name: cuda-nvml Epoch: 1 -Version: 13.0.39 -Release: 1%?dist +Version: 13.0.87 +Release: 1%{?dist} Summary: NVIDIA Management library (NVML) License: CUDA Toolkit URL: https://developer.nvidia.com/cuda-toolkit diff --git a/anda/lib/nvidia/cuda-nvprune/cuda-nvprune.spec b/anda/lib/nvidia/cuda-nvprune/cuda-nvprune.spec index b190525789..b84d2430bb 100644 --- a/anda/lib/nvidia/cuda-nvprune/cuda-nvprune.spec +++ b/anda/lib/nvidia/cuda-nvprune/cuda-nvprune.spec @@ -4,12 +4,12 @@ %global __strip /bin/true %global _missing_build_ids_terminate_build 0 %global _build_id_links none -%global major_package_version 12-8 +%global major_package_version 13-0 Name: %(echo %real_name | tr '_' '-') Epoch: 1 -Version: 13.0.39 -Release: 1%?dist +Version: 13.0.85 +Release: 1%{?dist} Summary: CUDA nvprune License: CUDA Toolkit URL: https://developer.nvidia.com/cuda-toolkit @@ -42,4 +42,3 @@ install -m 0755 -p -D bin/nvprune %{buildroot}%{_bindir}/nvprune %changelog %autochangelog - diff --git a/anda/lib/nvidia/cuda-nvrtc/cuda-nvrtc.spec b/anda/lib/nvidia/cuda-nvrtc/cuda-nvrtc.spec index 348934c1a7..13eac12786 100644 --- a/anda/lib/nvidia/cuda-nvrtc/cuda-nvrtc.spec +++ b/anda/lib/nvidia/cuda-nvrtc/cuda-nvrtc.spec @@ -4,12 +4,12 @@ %global __strip /bin/true %global _missing_build_ids_terminate_build 0 %global _build_id_links none -%global major_package_version 12-8 +%global major_package_version 13-0 Name: %(echo %real_name | tr '_' '-') Epoch: 1 -Version: 13.0.48 -Release: 1%?dist +Version: 13.0.88 +Release: 1%{?dist} Summary: CUDA runtime compilation library (NVRTC) License: CUDA Toolkit URL: https://developer.nvidia.com/cuda-toolkit @@ -100,4 +100,3 @@ sed -i \ %changelog %autochangelog - diff --git a/anda/lib/nvidia/cuda-nvtx/cuda-nvtx.spec b/anda/lib/nvidia/cuda-nvtx/cuda-nvtx.spec index e81e52b5ce..8d281a423a 100644 --- a/anda/lib/nvidia/cuda-nvtx/cuda-nvtx.spec +++ b/anda/lib/nvidia/cuda-nvtx/cuda-nvtx.spec @@ -4,12 +4,12 @@ %global __strip /bin/true %global _missing_build_ids_terminate_build 0 %global _build_id_links none -%global major_package_version 12-8 +%global major_package_version 13-0 Name: %(echo %real_name | tr '_' '-') Epoch: 1 -Version: 13.0.39 -Release: 1%?dist +Version: 13.0.85 +Release: 1%{?dist} Summary: NVIDIA Tools Extension (NVTX) library License: CUDA Toolkit URL: https://developer.nvidia.com/cuda-toolkit @@ -62,33 +62,11 @@ sed -i \ %files %license LICENSE -%{_libdir}/libnvToolsExt.so.* +%{_libdir}/libnvtx3interop.so.* %files devel -%{_includedir}/nvToolsExtCuda.h -%{_includedir}/nvToolsExtCudaRt.h -%{_includedir}/nvToolsExt.h -%{_includedir}/nvToolsExtOpenCL.h -%{_includedir}/nvToolsExtSync.h -%dir %{_includedir}/nvtx3/ -%{_includedir}/nvtx3/nvToolsExtCuda.h -%{_includedir}/nvtx3/nvToolsExtCudaRt.h -%{_includedir}/nvtx3/nvToolsExt.h -%{_includedir}/nvtx3/nvToolsExtOpenCL.h -%{_includedir}/nvtx3/nvToolsExtSync.h -%dir %{_includedir}/nvtx3/nvtxDetail/ -%{_includedir}/nvtx3/nvtxDetail/nvtxImplCore.h -%{_includedir}/nvtx3/nvtxDetail/nvtxImplCudaRt_v3.h -%{_includedir}/nvtx3/nvtxDetail/nvtxImplCuda_v3.h -%{_includedir}/nvtx3/nvtxDetail/nvtxImpl.h -%{_includedir}/nvtx3/nvtxDetail/nvtxImplOpenCL_v3.h -%{_includedir}/nvtx3/nvtxDetail/nvtxImplSync_v3.h -%{_includedir}/nvtx3/nvtxDetail/nvtxInitDecls.h -%{_includedir}/nvtx3/nvtxDetail/nvtxInitDefs.h -%{_includedir}/nvtx3/nvtxDetail/nvtxInit.h -%{_includedir}/nvtx3/nvtxDetail/nvtxLinkOnce.h -%{_includedir}/nvtx3/nvtxDetail/nvtxTypes.h -%{_libdir}/libnvToolsExt.so +%{_includedir}/nvtx3/ +%{_libdir}/libnvtx3interop.so %{_libdir}/pkgconfig/nvToolsExt.pc %changelog diff --git a/anda/lib/nvidia/cuda-nvtx/nvToolsExt.pc b/anda/lib/nvidia/cuda-nvtx/nvToolsExt.pc index 16ae2272f0..afa7f07781 100644 --- a/anda/lib/nvidia/cuda-nvtx/nvToolsExt.pc +++ b/anda/lib/nvidia/cuda-nvtx/nvToolsExt.pc @@ -4,5 +4,5 @@ includedir=INCLUDE_DIR Name: nvToolsExt Description: NVIDIA Tools Extension Version: CUDA_VERSION -Libs: -L${libdir} -lnvToolsExt +Libs: -L${libdir} -lnvtx3interop Cflags: -I${includedir} diff --git a/anda/lib/nvidia/cuda-profiler/cuda-profiler.spec b/anda/lib/nvidia/cuda-profiler/cuda-profiler.spec index 884edbf859..4cc2a4cfa6 100644 --- a/anda/lib/nvidia/cuda-profiler/cuda-profiler.spec +++ b/anda/lib/nvidia/cuda-profiler/cuda-profiler.spec @@ -5,7 +5,7 @@ Name: cuda-profiler Epoch: 1 -Version: 13.0.39 +Version: 13.0.85 Release: 1%?dist Summary: CUDA Profiler API License: CUDA Toolkit diff --git a/anda/lib/nvidia/cuda-sandbox/anda.hcl b/anda/lib/nvidia/cuda-sandbox/anda.hcl index 43320c9288..8e3c3441e8 100644 --- a/anda/lib/nvidia/cuda-sandbox/anda.hcl +++ b/anda/lib/nvidia/cuda-sandbox/anda.hcl @@ -1,5 +1,4 @@ project pkg { - arches = ["x86_64"] rpm { spec = "cuda-sandbox.spec" } diff --git a/anda/lib/nvidia/cuda-sandbox/cuda-sandbox.spec b/anda/lib/nvidia/cuda-sandbox/cuda-sandbox.spec index b00a90320e..d5742579f6 100644 --- a/anda/lib/nvidia/cuda-sandbox/cuda-sandbox.spec +++ b/anda/lib/nvidia/cuda-sandbox/cuda-sandbox.spec @@ -4,18 +4,19 @@ %global __strip /bin/true %global _missing_build_ids_terminate_build 0 %global _build_id_links none -%global major_package_version 12-8 +%global major_package_version 13-0 Name: cuda-sandbox Epoch: 1 -Version: 13.0.39 -Release: 1%?dist +Version: 13.0.85 +Release: 1%{?dist} Summary: CUDA nvsandboxutils License: CUDA Toolkit URL: https://developer.nvidia.com/cuda-toolkit -ExclusiveArch: x86_64 +ExclusiveArch: x86_64 aarch64 Source0: https://developer.download.nvidia.com/compute/cuda/redist/%{real_name}/linux-x86_64/%{real_name}-linux-x86_64-%{version}-archive.tar.xz +Source1: https://developer.download.nvidia.com/compute/cuda/redist/%{real_name}/linux-sbsa/%{real_name}-linux-sbsa-%{version}-archive.tar.xz Conflicts: %{name}-%{major_package_version} < %{?epoch:%{epoch}:}%{version}-%{release} @@ -35,13 +36,19 @@ Conflicts: %{name}-devel-%{major_package_version} < %{?epoch:%{epoch}:}%{ve This package provides development files for the CUDA nvsandboxutils library. %prep +%ifarch x86_64 %setup -q -n %{real_name}-linux-x86_64-%{version}-archive +%endif + +%ifarch aarch64 +%setup -q -T -b 1 -n %{real_name}-linux-sbsa-%{version}-archive +%endif %install mkdir -p %{buildroot}%{_includedir} cp -fr include/* %{buildroot}%{_includedir}/ -install -p -m 0644 -D %{_lib}/stubs/libnvidia-sandboxutils_loader.a %{buildroot}%{_libdir}/libnvidia-sandboxutils_loader.a +install -p -m 0644 -D lib/stubs/libnvidia-sandboxutils_loader.a %{buildroot}%{_libdir}/libnvidia-sandboxutils_loader.a %files devel %license LICENSE diff --git a/anda/lib/nvidia/cuda-sanitizer/cuda-sanitizer.spec b/anda/lib/nvidia/cuda-sanitizer/cuda-sanitizer.spec index 4115d07440..d5af0164d4 100644 --- a/anda/lib/nvidia/cuda-sanitizer/cuda-sanitizer.spec +++ b/anda/lib/nvidia/cuda-sanitizer/cuda-sanitizer.spec @@ -4,12 +4,12 @@ %global __strip /bin/true %global _missing_build_ids_terminate_build 0 %global _build_id_links none -%global major_package_version 12-8 +%global major_package_version 13-0 Name: cuda-sanitizer Epoch: 1 -Version: 13.0.48 -Release: 1%?dist +Version: 13.0.85 +Release: 1%{?dist} Summary: CUDA Compute Sanitizer API License: CUDA Toolkit URL: https://developer.nvidia.com/cuda-toolkit diff --git a/anda/lib/nvidia/cuda/cuda.csh b/anda/lib/nvidia/cuda/cuda.csh deleted file mode 100644 index 551814a37a..0000000000 --- a/anda/lib/nvidia/cuda/cuda.csh +++ /dev/null @@ -1,10 +0,0 @@ -if ( -x /usr/bin/cuda-g++ ) then - setenv HOST_COMPILER /usr/bin/cuda-g++ -endif - -if ( -d /usr/include/cuda ) then - setenv CUDA_INCLUDE_DIRS /usr/include - setenv CUDA_INC_PATH /usr/include -endif - -setenv CUDA_ROOT /usr diff --git a/anda/lib/nvidia/cuda/cuda.sh b/anda/lib/nvidia/cuda/cuda.sh deleted file mode 100644 index 89c10dc361..0000000000 --- a/anda/lib/nvidia/cuda/cuda.sh +++ /dev/null @@ -1,10 +0,0 @@ -if [ -x /usr/bin/cuda-g++ ]; then - export HOST_COMPILER=/usr/bin/cuda-g++ -fi - -if [ -d /usr/include/cuda ]; then - export CUDA_INCLUDE_DIRS=/usr/include - export CUDA_INC_PATH=/usr/include -fi - -export CUDA_ROOT=/usr diff --git a/anda/lib/nvidia/cuda/cuda.spec b/anda/lib/nvidia/cuda/cuda.spec index 0f459ad41f..de256c33c7 100644 --- a/anda/lib/nvidia/cuda/cuda.spec +++ b/anda/lib/nvidia/cuda/cuda.spec @@ -1,9 +1,9 @@ %global debug_package %{nil} -%global major_package_version 12-8 +%global major_package_version 13-0 Name: cuda -Version: 13.0.39 -Release: 1%?dist +Version: 13.0.85 +Release: 5%{?dist} Summary: NVIDIA Compute Unified Device Architecture Toolkit Epoch: 1 License: CUDA Toolkit @@ -14,8 +14,6 @@ ExclusiveArch: x86_64 aarch64 # it's really the same package. Source0: https://developer.download.nvidia.com/compute/cuda/redist/cuda_documentation/linux-x86_64/cuda_documentation-linux-x86_64-%{version}-archive.tar.xz -Source3: %{name}.sh -Source4: %{name}.csh Source21: cuda.pc Requires: %{name}-libs%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} @@ -35,9 +33,6 @@ Requires: %{name}-devel%{?_isa} Requires: %{name}-gdb%{?_isa} Requires: %{name}-memcheck%{?_isa} Requires: %{name}-nvdisasm%{?_isa} -%ifnarch aarch64 -Requires: %{name}-nvprof%{?_isa} -%endif Requires: %{name}-nvtx%{?_isa} Requires: %{name}-sanitizer%{?_isa} Requires: expat >= 1.95 @@ -58,6 +53,7 @@ Requires: libcurand%{?_isa} Requires: libcusolver%{?_isa} Requires: libcusparse%{?_isa} Requires: libnpp%{?_isa} +Requires: libnvjitlink%{?_isa} Requires: libnvjpeg%{?_isa} Conflicts: %{name}-driver-devel-%{major_package_version} < %{?epoch:%{epoch}:}%{version}-%{release} Conflicts: %{name}-libraries-%{major_package_version} < %{?epoch:%{epoch}:}%{version}-%{release} @@ -84,13 +80,13 @@ Requires: %{name}-cccl-devel%{?_isa} Requires: %{name}-cudart-devel%{?_isa} Requires: %{name}-cupti-devel%{?_isa} Requires: %{name}-nvcc%{?_isa} -Requires: %{name}-nvprof-devel%{?_isa} Requires: %{name}-nvprune%{?_isa} Requires: %{name}-nvml-devel%{?_isa} Requires: %{name}-nvrtc-devel%{?_isa} Requires: %{name}-nvtx-devel%{?_isa} Requires: %{name}-cuobjdump%{?_isa} Requires: %{name}-cuxxfilt-devel%{?_isa} +Requires: %{name}-profiler-devel%{?_isa} Requires: %{name}-sandbox-devel%{?_isa} Requires: libcublas-devel%{?_isa} Requires: libcufft-devel%{?_isa} @@ -99,6 +95,7 @@ Requires: libcurand-devel%{?_isa} Requires: libcusolver-devel%{?_isa} Requires: libcusparse-devel%{?_isa} Requires: libnpp-devel%{?_isa} +Requires: libnvjitlink-devel%{?_isa} Requires: libnvjpeg-devel%{?_isa} Conflicts: %{name}-headers-%{major_package_version} < %{?epoch:%{epoch}:}%{version} Conflicts: %{name}-libraries-dev-%{major_package_version} < %{?epoch:%{epoch}:}%{version} @@ -117,25 +114,19 @@ This package provides the development files of the %{name} package. %install mkdir -p %{buildroot}%{_libdir}/pkgconfig/ -mkdir -p %{buildroot}%{_sysconfdir}/profile.d/ - -# Environment settings -install -pm 644 %{SOURCE3} %{SOURCE4} %{buildroot}%{_sysconfdir}/profile.d # pkg-config files install -pm 644 %{SOURCE21} %{buildroot}/%{_libdir}/pkgconfig - -# Set proper variables sed -i \ -e 's|CUDA_VERSION|%{version}|g' \ + -e 's|PREFIX|%{_prefix}|g' \ -e 's|LIBDIR|%{_libdir}|g' \ - -e 's|INCLUDE_DIR|%{_includedir}/cuda|g' \ - %{buildroot}/%{_libdir}/pkgconfig/*.pc + -e 's|INCLUDE_DIR|%{_includedir}|g' \ + %{buildroot}%{_libdir}/pkgconfig/*.pc %files %license LICENSE %doc CUDA_Toolkit_Release_Notes.txt DOCS EULA.txt README tools -%config(noreplace) %{_sysconfdir}/profile.d/%{name}.*sh %files cli-tools # Empty metapackage diff --git a/anda/lib/nvidia/libcublas/libcublas.spec b/anda/lib/nvidia/libcublas/libcublas.spec index 8278ed3311..cfb95ff6bd 100644 --- a/anda/lib/nvidia/libcublas/libcublas.spec +++ b/anda/lib/nvidia/libcublas/libcublas.spec @@ -2,11 +2,11 @@ %global __strip /bin/true %global _missing_build_ids_terminate_build 0 %global _build_id_links none -%global major_package_version 12-8 +%global major_package_version 13-0 Name: libcublas Epoch: 1 -Version: 13.0.0.19 +Version: 13.1.0.3 Release: 1%?dist Summary: NVIDIA CUDA Basic Linear Algebra Subroutines (cuBLAS) libraries License: CUDA Toolkit diff --git a/anda/lib/nvidia/libcufft/libcufft.spec b/anda/lib/nvidia/libcufft/libcufft.spec index 62724f2348..51aaceb7d6 100644 --- a/anda/lib/nvidia/libcufft/libcufft.spec +++ b/anda/lib/nvidia/libcufft/libcufft.spec @@ -2,12 +2,12 @@ %global __strip /bin/true %global _missing_build_ids_terminate_build 0 %global _build_id_links none -%global major_package_version 12-8 +%global major_package_version 13-0 Name: libcufft Epoch: 2 -Version: 12.0.0.15 -Release: 1%?dist +Version: 12.0.0.61 +Release: 1%{?dist} Summary: NVIDIA CUDA Fast Fourier Transform library (cuFFT) libraries License: CUDA Toolkit URL: https://developer.nvidia.com/cuda-toolkit @@ -94,9 +94,7 @@ sed -i \ %files static %{_libdir}/libcufft_static.a -%{_libdir}/libcufft_static_nocallback.a %{_libdir}/libcufftw_static.a %changelog %autochangelog - diff --git a/anda/lib/nvidia/libcufile/libcufile.spec b/anda/lib/nvidia/libcufile/libcufile.spec index fa4d758c85..92e7f737dd 100644 --- a/anda/lib/nvidia/libcufile/libcufile.spec +++ b/anda/lib/nvidia/libcufile/libcufile.spec @@ -2,12 +2,12 @@ %global __strip /bin/true %global _missing_build_ids_terminate_build 0 %global _build_id_links none -%global major_package_version 12-8 +%global major_package_version 13-0 Name: libcufile Epoch: 1 -Version: 1.15.0.42 -Release: 1%?dist +Version: 1.15.1.6 +Release: 1%{?dist} Summary: NVIDIA GPUDirect Storage library (cuFile) License: CUDA Toolkit URL: https://developer.nvidia.com/cuda-toolkit @@ -100,15 +100,7 @@ sed -i \ %{_libdir}/libcufile_rdma.so %{_libdir}/libcufile.so %{_libdir}/pkgconfig/cufile.pc -%{_mandir}/man3/CUfileFSOps.3* -%{_mandir}/man3/cufileRDMAInfo.3* -%{_mandir}/man3/cufile.h.3* -%{_mandir}/man3/CUfileDrvProps.3* -%{_mandir}/man3/CUfileDescr_t.3* -%{_mandir}/man3/CUfileError.3* -%{_mandir}/man3/CUfileIOParams.3* -%{_mandir}/man3/CUfileIOEvents.3* -%{_mandir}/man3/CUfileOpError.h.3* +%{_mandir}/man3/* %files static %{_libdir}/libcufile_rdma_static.a diff --git a/anda/lib/nvidia/libcurand/libcurand.spec b/anda/lib/nvidia/libcurand/libcurand.spec index 4551764644..42217742d7 100644 --- a/anda/lib/nvidia/libcurand/libcurand.spec +++ b/anda/lib/nvidia/libcurand/libcurand.spec @@ -2,12 +2,12 @@ %global __strip /bin/true %global _missing_build_ids_terminate_build 0 %global _build_id_links none -%global major_package_version 12-8 +%global major_package_version 13-0 Name: libcurand Epoch: 2 Version: 10.4.0.35 -Release: 1%?dist +Release: 1%{?dist} Summary: NVIDIA CUDA Random Number Generation library (cuRAND) License: CUDA Toolkit URL: https://developer.nvidia.com/cuda-toolkit @@ -97,4 +97,3 @@ sed -i \ %changelog %autochangelog - diff --git a/anda/lib/nvidia/libcusolver/libcusolver.spec b/anda/lib/nvidia/libcusolver/libcusolver.spec index 022f3b149c..fa623ff04e 100644 --- a/anda/lib/nvidia/libcusolver/libcusolver.spec +++ b/anda/lib/nvidia/libcusolver/libcusolver.spec @@ -2,12 +2,12 @@ %global __strip /bin/true %global _missing_build_ids_terminate_build 0 %global _build_id_links none -%global major_package_version 12-8 +%global major_package_version 13-0 Name: libcusolver Epoch: 2 -Version: 12.0.3.29 -Release: 1%?dist +Version: 12.0.4.66 +Release: 1%{?dist} Summary: NVIDIA cuSOLVER library License: CUDA Toolkit URL: https://developer.nvidia.com/cuda-toolkit diff --git a/anda/lib/nvidia/libcusparse/libcusparse.spec b/anda/lib/nvidia/libcusparse/libcusparse.spec index 83e60b4f3f..faeb692e5e 100644 --- a/anda/lib/nvidia/libcusparse/libcusparse.spec +++ b/anda/lib/nvidia/libcusparse/libcusparse.spec @@ -2,12 +2,12 @@ %global __strip /bin/true %global _missing_build_ids_terminate_build 0 %global _build_id_links none -%global major_package_version 12-8 +%global major_package_version 13-0 Name: libcusparse Epoch: 1 -Version: 12.6.2.49 -Release: 1%?dist +Version: 12.6.3.3 +Release: 1%{?dist} Summary: NVIDIA CUDA Sparse Matrix library (cuSPARSE) library License: CUDA Toolkit URL: https://developer.nvidia.com/cuda-toolkit @@ -85,4 +85,3 @@ sed -i \ %changelog %autochangelog - diff --git a/anda/lib/nvidia/libcusparselt/libcusparselt.spec b/anda/lib/nvidia/libcusparselt/libcusparselt.spec index 0ffdbe5748..9299ef5866 100644 --- a/anda/lib/nvidia/libcusparselt/libcusparselt.spec +++ b/anda/lib/nvidia/libcusparselt/libcusparselt.spec @@ -2,17 +2,18 @@ %global __strip /bin/true %global _missing_build_ids_terminate_build 0 %global _build_id_links none +%global cuda_version 13 Name: libcusparselt -Version: 0.8.0.4 -Release: 1%?dist +Version: 0.8.1.1 +Release: 1%{?dist} Summary: CUDA Library for Sparse Matrix-Matrix Multiplication License: NVIDIA License URL: https://docs.nvidia.com/cuda/cusparselt/index.html ExclusiveArch: x86_64 aarch64 -Source0: https://developer.download.nvidia.com/compute/cusparselt/redist/libcusparse_lt/linux-x86_64/libcusparse_lt-linux-x86_64-%{version}-archive.tar.xz -Source1: https://developer.download.nvidia.com/compute/cusparselt/redist/libcusparse_lt/linux-sbsa/libcusparse_lt-linux-sbsa-%{version}-archive.tar.xz +Source0: https://developer.download.nvidia.com/compute/cusparselt/redist/libcusparse_lt/linux-x86_64/libcusparse_lt-linux-x86_64-%{version}_cuda%{cuda_version}-archive.tar.xz +Source1: https://developer.download.nvidia.com/compute/cusparselt/redist/libcusparse_lt/linux-sbsa/libcusparse_lt-linux-sbsa-%{version}_cuda%{cuda_version}-archive.tar.xz Conflicts: %{name}0 < %{?epoch:%{epoch}:}%{version}-%{release} @@ -43,11 +44,11 @@ Static libraries for cuSPARSELt. %prep %ifarch x86_64 -%setup -q -n libcusparse_lt-linux-x86_64-%{version}-archive +%setup -q -n libcusparse_lt-linux-x86_64-%{version}_cuda%{cuda_version}-archive %endif %ifarch aarch64 -%setup -q -T -b 1 -n libcusparse_lt-linux-sbsa-%{version}-archive +%setup -q -T -b 1 -n libcusparse_lt-linux-sbsa-%{version}_cuda%{cuda_version}-archive %endif %build diff --git a/anda/lib/nvidia/libnpp/libnpp.spec b/anda/lib/nvidia/libnpp/libnpp.spec index aa06a3d593..83db17ec53 100644 --- a/anda/lib/nvidia/libnpp/libnpp.spec +++ b/anda/lib/nvidia/libnpp/libnpp.spec @@ -2,12 +2,12 @@ %global __strip /bin/true %global _missing_build_ids_terminate_build 0 %global _build_id_links none -%global major_package_version 12-8 +%global major_package_version 13-0 Name: libnpp Epoch: 1 -Version: 13.0.0.50 -Release: 1%?dist +Version: 13.0.1.2 +Release: 1%{?dist} Summary: NVIDIA Performance Primitives libraries License: CUDA Toolkit URL: https://developer.nvidia.com/cuda-toolkit diff --git a/anda/lib/nvidia/libnvfatbin/libnvfatbin.spec b/anda/lib/nvidia/libnvfatbin/libnvfatbin.spec index 0e2396d801..4773213556 100644 --- a/anda/lib/nvidia/libnvfatbin/libnvfatbin.spec +++ b/anda/lib/nvidia/libnvfatbin/libnvfatbin.spec @@ -2,12 +2,12 @@ %global __strip /bin/true %global _missing_build_ids_terminate_build 0 %global _build_id_links none -%global major_package_version 12-8 +%global major_package_version 13-0 Name: libnvfatbin Epoch: 1 -Version: 13.0.39 -Release: 1%?dist +Version: 13.0.85 +Release: 1%{?dist} Summary: CUDA Fatbin Creator API License: CUDA Toolkit URL: https://developer.nvidia.com/cuda-toolkit @@ -86,4 +86,3 @@ sed -i \ %changelog %autochangelog - diff --git a/anda/lib/nvidia/libnvidia-container/libnvidia-container.spec b/anda/lib/nvidia/libnvidia-container/libnvidia-container.spec index 9c2a39f54e..620637689d 100644 --- a/anda/lib/nvidia/libnvidia-container/libnvidia-container.spec +++ b/anda/lib/nvidia/libnvidia-container/libnvidia-container.spec @@ -1,7 +1,7 @@ %global _major 1 Name: libnvidia-container -Version: 1.17.8 +Version: 1.18.0 Release: 1%?dist Summary: NVIDIA container runtime library License: BSD-3-Clause AND Apache-2.0 AND GPL-3.0-or-later AND LGPL-3.0-or-later AND MIT AND GPL-2.0-only diff --git a/anda/lib/nvidia/libnvjitlink/libnvjitlink.spec b/anda/lib/nvidia/libnvjitlink/libnvjitlink.spec index da6d44ff71..6c38d04485 100644 --- a/anda/lib/nvidia/libnvjitlink/libnvjitlink.spec +++ b/anda/lib/nvidia/libnvjitlink/libnvjitlink.spec @@ -2,12 +2,12 @@ %global __strip /bin/true %global _missing_build_ids_terminate_build 0 %global _build_id_links none -%global major_package_version 12-8 +%global major_package_version 13-0 Name: libnvjitlink Epoch: 1 -Version: 13.0.39 -Release: 1%?dist +Version: 13.0.88 +Release: 1%{?dist} Summary: NVIDIA compiler library for JIT LTO functionality License: CUDA Toolkit URL: https://developer.nvidia.com/cuda-toolkit diff --git a/anda/lib/nvidia/libnvjpeg/libnvjpeg.spec b/anda/lib/nvidia/libnvjpeg/libnvjpeg.spec index 8c5765dda0..3fb6c0cac5 100644 --- a/anda/lib/nvidia/libnvjpeg/libnvjpeg.spec +++ b/anda/lib/nvidia/libnvjpeg/libnvjpeg.spec @@ -2,12 +2,12 @@ %global __strip /bin/true %global _missing_build_ids_terminate_build 0 %global _build_id_links none -%global major_package_version 12-8 +%global major_package_version 13-0 Name: libnvjpeg Epoch: 1 -Version: 13.0.0.40 -Release: 1%?dist +Version: 13.0.1.86 +Release: 1%{?dist} Summary: CUDA NVIDIA JPEG decoder (nvJPEG) License: CUDA Toolkit URL: https://developer.nvidia.com/cuda-toolkit @@ -81,4 +81,3 @@ sed -i \ %changelog %autochangelog - diff --git a/anda/lib/nvidia/libnvjpeg2k/libnvjpeg2k.spec b/anda/lib/nvidia/libnvjpeg2k/libnvjpeg2k.spec index c7498d2059..6861258f7a 100644 --- a/anda/lib/nvidia/libnvjpeg2k/libnvjpeg2k.spec +++ b/anda/lib/nvidia/libnvjpeg2k/libnvjpeg2k.spec @@ -3,7 +3,7 @@ %global _missing_build_ids_terminate_build 0 Name: libnvjpeg2k -Version: 0.9.0.43 +Version: 0.9.1.47 Release: 1%?dist Summary: NVIDIA JPEG 2K decoder (nvJPEG2000) License: NVIDIA EULA @@ -54,6 +54,7 @@ This package contains static libraries for NVIDIA JPEG 2K decoder (nvJPEG2000). %endif %build +# Nothing to build %install mkdir -p %{buildroot}/%{_libdir}/pkgconfig/ diff --git a/anda/lib/nvidia/libnvptxcompiler-devel/anda.hcl b/anda/lib/nvidia/libnvptxcompiler-devel/anda.hcl new file mode 100644 index 0000000000..32d749a8c3 --- /dev/null +++ b/anda/lib/nvidia/libnvptxcompiler-devel/anda.hcl @@ -0,0 +1,9 @@ +project pkg { + rpm { + spec = "libnvptxcompiler-devel.spec" + } + labels { + subrepo = "nvidia" + updbranch = 1 + } +} diff --git a/anda/lib/nvidia/libnvptxcompiler-devel/libnvptxcompiler-devel.spec b/anda/lib/nvidia/libnvptxcompiler-devel/libnvptxcompiler-devel.spec new file mode 100644 index 0000000000..c4ffa36edf --- /dev/null +++ b/anda/lib/nvidia/libnvptxcompiler-devel/libnvptxcompiler-devel.spec @@ -0,0 +1,45 @@ +%global real_name libnvptxcompiler + +%global debug_package %{nil} +%global __strip /bin/true +%global _missing_build_ids_terminate_build 0 +%global _build_id_links none +%global major_package_version 13-0 + +Name: %{real_name}-devel +Epoch: 1 +Version: 13.0.88 +Release: 1%{?dist} +Summary: CUDA nvptxcompiler +License: CUDA Toolkit +URL: https://developer.nvidia.com/cuda-toolkit +ExclusiveArch: x86_64 aarch64 + +Source0: https://developer.download.nvidia.com/compute/cuda/redist/%{real_name}/linux-x86_64/%{real_name}-linux-x86_64-%{version}-archive.tar.xz +Source1: https://developer.download.nvidia.com/compute/cuda/redist/%{real_name}/linux-sbsa/%{real_name}-linux-sbsa-%{version}-archive.tar.xz + +Conflicts: %{real_name}-%{major_package_version} < %{?epoch:%{epoch}:}%{version}-%{release} + +%description +Compiler IR for CUDA applications. + +%prep +%ifarch x86_64 +%setup -q -n %{real_name}-linux-x86_64-%{version}-archive +%endif + +%ifarch aarch64 +%setup -q -T -b 1 -n %{real_name}-linux-sbsa-%{version}-archive +%endif + +%install +install -p -m 0755 -D lib/libnvptxcompiler_static.a %{buildroot}%{_libdir}/libnvptxcompiler_static.a +install -p -m 0644 -D include/nvPTXCompiler.h %{buildroot}%{_includedir}/nvPTXCompiler.h + +%files +%license LICENSE +%{_libdir}/libnvptxcompiler_static.a +%{_includedir}/nvPTXCompiler.h + +%changelog +%autochangelog diff --git a/anda/lib/nvidia/libnvptxcompiler-devel/update.rhai b/anda/lib/nvidia/libnvptxcompiler-devel/update.rhai new file mode 100644 index 0000000000..c78f2973fc --- /dev/null +++ b/anda/lib/nvidia/libnvptxcompiler-devel/update.rhai @@ -0,0 +1,3 @@ +import "andax/nvidia.rhai" as nvidia; + +rpm.version(nvidia::nvidia_component_version("libnvptxcompiler")); diff --git a/anda/lib/nvidia/libnvvm/anda.hcl b/anda/lib/nvidia/libnvvm/anda.hcl new file mode 100644 index 0000000000..657a9337c7 --- /dev/null +++ b/anda/lib/nvidia/libnvvm/anda.hcl @@ -0,0 +1,9 @@ +project pkg { + rpm { + spec = "libnvvm.spec" + } + labels { + subrepo = "nvidia" + updbranch = 1 + } +} diff --git a/anda/lib/nvidia/libnvvm/libnvvm.spec b/anda/lib/nvidia/libnvvm/libnvvm.spec new file mode 100644 index 0000000000..fdb31504bc --- /dev/null +++ b/anda/lib/nvidia/libnvvm/libnvvm.spec @@ -0,0 +1,68 @@ +%global real_name libnvvm + +%global debug_package %{nil} +%global __strip /bin/true +%global _missing_build_ids_terminate_build 0 +%global _build_id_links none +%global major_package_version 13-0 + +Name: %(echo %real_name | tr '_' '-') +Version: 13.0.88 +Release: 2%{?dist} +Summary: CUDA NVVM +License: CUDA Toolkit +URL: https://developer.nvidia.com/cuda-toolkit +ExclusiveArch: x86_64 aarch64 + +Source0: https://developer.download.nvidia.com/compute/cuda/redist/%{real_name}/linux-x86_64/%{real_name}-linux-x86_64-%{version}-archive.tar.xz +Source1: https://developer.download.nvidia.com/compute/cuda/redist/%{real_name}/linux-sbsa/%{real_name}-linux-sbsa-%{version}-archive.tar.xz + +Conflicts: %{name}-%{major_package_version} < %{?epoch:%{epoch}:}%{version}-%{release} + +%description +NVVM IR is a compiler IR (intermediate representation) based on the LLVM IR. +The NVVM IR is designed to represent GPU compute kernels (for example, CUDA +kernels). High-level language front-ends, like the CUDA C compiler front-end, +can generate NVVM IR. The NVVM compiler (which is based on LLVM) generates PTX +code from NVVM IR. + +%package devel +Summary: Development package for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Conflicts: %{name}-%{major_package_version} < %{?epoch:%{epoch}:}%{version}-%{release} + +%description devel +Files for development with %{name} and LLVM IR bytecode. + +%prep +%ifarch x86_64 +%setup -q -n %{real_name}-linux-x86_64-%{version}-archive +%endif + +%ifarch aarch64 +%setup -q -T -b 1 -n %{real_name}-linux-sbsa-%{version}-archive +%endif + +%install +install -p -m 0755 -D nvvm/bin/cicc %{buildroot}%{_bindir}/cicc +install -p -m 0644 -D nvvm/include/nvvm.h %{buildroot}%{_includedir}/nvvm.h +install -p -m 0644 -D nvvm/libdevice/libdevice.10.bc %{buildroot}%{_datadir}/libdevice/libdevice.10.bc +# CMake expects the nvvm/libdevice in the same prefix as bin/cicc: +ln -sf share %{buildroot}%{_prefix}/nvvm + +mkdir -p %{buildroot}%{_libdir} +cp -fr nvvm/lib64/* %{buildroot}%{_libdir}/ + +%files +%license LICENSE +%{_libdir}/libnvvm.so.* + +%files devel +%{_bindir}/cicc +%{_datadir}/libdevice +%{_includedir}/nvvm.h +%{_libdir}/libnvvm.so +%{_prefix}/nvvm + +%changelog +%autochangelog diff --git a/anda/lib/nvidia/libnvvm/update.rhai b/anda/lib/nvidia/libnvvm/update.rhai new file mode 100644 index 0000000000..e04c6a2432 --- /dev/null +++ b/anda/lib/nvidia/libnvvm/update.rhai @@ -0,0 +1,3 @@ +import "andax/nvidia.rhai" as nvidia; + +rpm.version(nvidia::nvidia_component_version("libnvvm")); diff --git a/anda/lib/openh264/anda.hcl b/anda/lib/openh264/anda.hcl index 825d3a7615..ddde4a35c1 100644 --- a/anda/lib/openh264/anda.hcl +++ b/anda/lib/openh264/anda.hcl @@ -3,6 +3,6 @@ project pkg { spec = "openh264.spec" } labels { - subrepo = "extras" + subrepo = "multimedia" } } diff --git a/anda/lib/rtmpdump/anda.hcl b/anda/lib/rtmpdump/anda.hcl index 8a4c8ba8c6..6deeb7f0d2 100644 --- a/anda/lib/rtmpdump/anda.hcl +++ b/anda/lib/rtmpdump/anda.hcl @@ -4,6 +4,7 @@ project pkg { spec = "rtmpdump.spec" } labels { - mock =1 + mock = 1 + subrepo = "multimedia" } } diff --git a/anda/lib/sdbus-cpp/sdbus-cpp.terra.spec b/anda/lib/sdbus-cpp/sdbus-cpp.terra.spec index 833c05e25e..72e2f2fcc2 100644 --- a/anda/lib/sdbus-cpp/sdbus-cpp.terra.spec +++ b/anda/lib/sdbus-cpp/sdbus-cpp.terra.spec @@ -4,8 +4,8 @@ %global realname sdbus-cpp Name: %realname.terra -Version: 2.1.0 -Release: 3%{?dist} +Version: 2.2.0 +Release: 1%?dist Summary: High-level C++ D-Bus library License: LGPL-2.1-only diff --git a/anda/lib/tdlib/tdlib-nightly.spec b/anda/lib/tdlib/tdlib-nightly.spec index 19104523b0..c4552d9988 100644 --- a/anda/lib/tdlib/tdlib-nightly.spec +++ b/anda/lib/tdlib/tdlib-nightly.spec @@ -1,6 +1,6 @@ -%global commit 5c77c4692c28eb48a68ef1c1eeb1b1d732d507d3 -%global ver 1.8.52 -%global commit_date 20250820 +%global commit dd1b761fda7e47f4e0275c4d319f80a04db1997f +%global ver 1.8.56 +%global commit_date 20251023 %global shortcommit %(c=%{commit}; echo ${c:0:7}) Name: tdlib-nightly diff --git a/anda/lib/zsync2/zsync2.spec b/anda/lib/zsync2/zsync2.spec index 5d9b970f72..9f08aa2387 100644 --- a/anda/lib/zsync2/zsync2.spec +++ b/anda/lib/zsync2/zsync2.spec @@ -1,8 +1,8 @@ -%global git_commit 87fb5a0f3c14d3cf35aa6547cc60d099c89ca532 +%global git_commit fc62ae7851ef28dc390a57fbdbe90b0afc5e3102 %global commit_short %(c=%{git_commit}; echo ${c:0:7}) -%global ver 2.0.0-alpha-1-20230304 +%global ver 2.0.0-alpha-1-20250926 %global libver %ver.git%{commit_short} # replace - with ~ diff --git a/anda/misc/F-Sy-H/F-Sy-H.spec b/anda/misc/F-Sy-H/F-Sy-H.spec new file mode 100644 index 0000000000..ffc8f0df9b --- /dev/null +++ b/anda/misc/F-Sy-H/F-Sy-H.spec @@ -0,0 +1,50 @@ +Name: F-Sy-H +Version: 1.67 +Release: 2%?dist +Summary: Feature-rich Syntax Highlighting for Zsh +License: BSD-3-Clause +URL: https://github.com/z-shell/F-Sy-H +Source0: %url/archive/refs/tags/v%version.tar.gz +Requires: zsh +BuildArch: noarch +Provides: f-sy-h +Provides: zsh-F-Sy-H +Provides: zsh-f-sy-h +Packager: Owen Zimmerman + +%description +%summary. + +%prep +%autosetup -n F-Sy-H-%{version} + +%build + +%install + +mkdir -p %{buildroot}%{zsh_completions_dir}/chroma +mkdir -p %{buildroot}%{zsh_completions_dir}/functions +mkdir -p %{buildroot}%{zsh_completions_dir}/share +mkdir -p %{buildroot}%{zsh_completions_dir}/share/parse +mkdir -p %{buildroot}%{zsh_completions_dir}/themes + +install -Dm644 F-Sy-H.plugin.zsh %{buildroot}%{zsh_completions_dir}/F-Sy-H.plugin.zsh +install -Dm644 chroma/* %{buildroot}%{zsh_completions_dir}/chroma/ +install -Dm644 functions/* %{buildroot}%{zsh_completions_dir}/functions/ +install -Dm644 share/*.zsh %{buildroot}%{zsh_completions_dir}/share/ +install -Dm644 share/parse/* %{buildroot}%{zsh_completions_dir}/share/parse/ +install -Dm644 themes/* %{buildroot}%{zsh_completions_dir}/themes/ + +%files +%doc docs/*.md +%license LICENSE +%{zsh_completions_dir}/F-Sy-H.plugin.zsh +%{zsh_completions_dir}/chroma/* +%{zsh_completions_dir}/functions/* +%{zsh_completions_dir}/share/*.zsh +%{zsh_completions_dir}/share/parse/* +%{zsh_completions_dir}/themes/* + +%changelog +* Tue Oct 07 2025 Owen Zimmerman +- Initial commit diff --git a/anda/misc/F-Sy-H/anda.hcl b/anda/misc/F-Sy-H/anda.hcl new file mode 100644 index 0000000000..cb220c84a3 --- /dev/null +++ b/anda/misc/F-Sy-H/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "F-Sy-H.spec" + } +} diff --git a/anda/misc/F-Sy-H/update.rhai b/anda/misc/F-Sy-H/update.rhai new file mode 100644 index 0000000000..2ea7780d16 --- /dev/null +++ b/anda/misc/F-Sy-H/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("z-shell/F-Sy-H")); diff --git a/anda/misc/activate-linux/activate-linux.spec b/anda/misc/activate-linux/activate-linux.spec new file mode 100644 index 0000000000..e231a38f60 --- /dev/null +++ b/anda/misc/activate-linux/activate-linux.spec @@ -0,0 +1,52 @@ +%global commit 347a579411fe871a6a1a4b9989384dddcd477ad5 +%global date 20251104 +%global short %(c=%{commit}; echo ${c:0:7}) +%global ver 1.1.0 + +Name: activate-linux +Summary: The "Activate Windows" watermark ported to Linux +Version: %{ver}^%{date}git.%{short} +License: GPL-3.0-only +Release: 1%?dist +URL: https://github.com/MrGlockenspiel/activate-linux +Source0: %{url}/archive/%{commit}.tar.gz +BuildRequires: clang +BuildRequires: pkgconfig(pango) +BuildRequires: libconfig-devel +BuildRequires: libXinerama-devel +BuildRequires: libXext-devel +BuildRequires: libXt-devel +BuildRequires: libXrandr-devel +BuildRequires: libX11-devel +BuildRequires: libXi-devel +BuildRequires: wayland-devel +BuildRequires: wayland-protocols-devel +Packager: Metcya + +%description +The "Activate Windows" watermark ported to Linux with Xlib and cairo in C + +"Science isn't about WHY. It's about WHY NOT. Why is so much of our science dangerous? Why not marry safe science if you love it so much. In fact, why not invent a special safety door that won't hit you on the butt on the way out, because you are fired." + +Maintained by MrGlockenspiel. + +%prep +%autosetup -n activate-linux-%{commit} + +%build +%make_build + +%install +# ewwww +export PREFIX="" +export BINDIR=%{_bindir} +%make_install + +%files +%{_bindir}/activate-linux +%license LICENSE.md +%doc ARGS.md README.md + +%changelog +* Sun Nov 2 2025 Metcya +- Package activate-linux diff --git a/anda/misc/activate-linux/anda.hcl b/anda/misc/activate-linux/anda.hcl new file mode 100644 index 0000000000..d673aabd2c --- /dev/null +++ b/anda/misc/activate-linux/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "activate-linux.spec" + } +} diff --git a/anda/misc/activate-linux/update.rhai b/anda/misc/activate-linux/update.rhai new file mode 100644 index 0000000000..8020bc0c69 --- /dev/null +++ b/anda/misc/activate-linux/update.rhai @@ -0,0 +1,8 @@ +rpm.global("commit", gh_commit("MrGlockenspiel/activate-linux")); +if rpm.changed() { + rpm.release(); + rpm.global("date", date()); + let ver = gh_tag("MrGlockenspiel/activate-linux"); + ver.crop(1); + rpm.global("ver", ver); +} diff --git a/anda/misc/alsa-ucm-cros/alsa-ucm-cros.spec b/anda/misc/alsa-ucm-cros/alsa-ucm-cros.spec index 543a0c3aee..0e4159181f 100644 --- a/anda/misc/alsa-ucm-cros/alsa-ucm-cros.spec +++ b/anda/misc/alsa-ucm-cros/alsa-ucm-cros.spec @@ -1,7 +1,7 @@ %define debug_package %nil Name: alsa-ucm-cros -Version: 0.7 +Version: 0.8 Release: 1%?dist Summary: ALSA Use Case Manager configuration License: BSD-3-Clause diff --git a/anda/misc/arrpc/arrpc.spec b/anda/misc/arrpc/arrpc.spec index 23e4b84491..343cb0449a 100644 --- a/anda/misc/arrpc/arrpc.spec +++ b/anda/misc/arrpc/arrpc.spec @@ -1,9 +1,9 @@ %define debug_package %nil %define __strip /bin/true -%global commit 5aadc307cb9bf4479f0a12364a253b07a77ace22 +%global commit 87c7c6f67ab8ad440e2ca0bdabce9626226bc25b Name: arrpc -Version: 3.5.0 +Version: 3.6.0 Release: 1%?dist Summary: Open Discord RPC server for atypical setups License: MIT diff --git a/anda/misc/bup/anda.hcl b/anda/misc/bup/anda.hcl new file mode 100644 index 0000000000..cb4d0ddd9c --- /dev/null +++ b/anda/misc/bup/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "bup.spec" + } +} diff --git a/anda/misc/bup/bup.spec b/anda/misc/bup/bup.spec new file mode 100644 index 0000000000..128eb9a41a --- /dev/null +++ b/anda/misc/bup/bup.spec @@ -0,0 +1,120 @@ +Name: bup +Version: 0.33.9 +Release: 1%?dist +Summary: Efficient backup system based on the git packfile format +License: LGPL-2.0-only +URL: https://bup.github.io +Source0: https://github.com/bup/bup/archive/refs/tags/%version.tar.gz +Packager: madonuko +BuildRequires: python3-devel +BuildRequires: gcc-c++ git-core +BuildRequires: pandoc +BuildRequires: pkgconfig(readline) +BuildRequires: pkgconfig(libacl) +Requires: python3 + +%description +bup is a program that backs things up. It's short for "backup." Can you believe that nobody else has named an open source program "bup" after all this time? Me neither. + +%package doc +Summary: HTML documentations for %name +BuildArch: noarch +%description doc +HTML documentations for %name. + +%prep +%autosetup + +%build +./configure +%make_build + +%install +%make_install PREFIX=%_prefix LIBDIR=%_libdir/bup + +%files doc +%license LICENSE +%doc %_pkgdocdir/bup-bloom.1.html +%doc %_pkgdocdir/bup-cat-file.1.html +%doc %_pkgdocdir/bup-config.5.html +%doc %_pkgdocdir/bup-daemon.1.html +%doc %_pkgdocdir/bup-damage.1.html +%doc %_pkgdocdir/bup-drecurse.1.html +%doc %_pkgdocdir/bup-features.1.html +%doc %_pkgdocdir/bup-fsck.1.html +%doc %_pkgdocdir/bup-ftp.1.html +%doc %_pkgdocdir/bup-fuse.1.html +%doc %_pkgdocdir/bup-gc.1.html +%doc %_pkgdocdir/bup-get.1.html +%doc %_pkgdocdir/bup-help.1.html +%doc %_pkgdocdir/bup-import-duplicity.1.html +%doc %_pkgdocdir/bup-import-rdiff-backup.1.html +%doc %_pkgdocdir/bup-import-rsnapshot.1.html +%doc %_pkgdocdir/bup-index.1.html +%doc %_pkgdocdir/bup-init.1.html +%doc %_pkgdocdir/bup-join.1.html +%doc %_pkgdocdir/bup-ls.1.html +%doc %_pkgdocdir/bup-margin.1.html +%doc %_pkgdocdir/bup-memtest.1.html +%doc %_pkgdocdir/bup-meta.1.html +%doc %_pkgdocdir/bup-midx.1.html +%doc %_pkgdocdir/bup-mux.1.html +%doc %_pkgdocdir/bup-on.1.html +%doc %_pkgdocdir/bup-prune-older.1.html +%doc %_pkgdocdir/bup-random.1.html +%doc %_pkgdocdir/bup-restore.1.html +%doc %_pkgdocdir/bup-rm.1.html +%doc %_pkgdocdir/bup-save.1.html +%doc %_pkgdocdir/bup-server.1.html +%doc %_pkgdocdir/bup-split.1.html +%doc %_pkgdocdir/bup-tag.1.html +%doc %_pkgdocdir/bup-tick.1.html +%doc %_pkgdocdir/bup-validate-object-links.1.html +%doc %_pkgdocdir/bup-validate-ref-links.1.html +%doc %_pkgdocdir/bup-web.1.html +%doc %_pkgdocdir/bup.1.html + +%files +%license LICENSE +%doc README.md DESIGN HACKING +%_bindir/bup +%_libdir/bup/ +%_mandir/man1/bup-bloom.1.* +%_mandir/man1/bup-cat-file.1.* +%_mandir/man1/bup-daemon.1.* +%_mandir/man1/bup-damage.1.* +%_mandir/man1/bup-drecurse.1.* +%_mandir/man1/bup-features.1.* +%_mandir/man1/bup-fsck.1.* +%_mandir/man1/bup-ftp.1.* +%_mandir/man1/bup-fuse.1.* +%_mandir/man1/bup-gc.1.* +%_mandir/man1/bup-get.1.* +%_mandir/man1/bup-help.1.* +%_mandir/man1/bup-import-duplicity.1.* +%_mandir/man1/bup-import-rdiff-backup.1.* +%_mandir/man1/bup-import-rsnapshot.1.* +%_mandir/man1/bup-index.1.* +%_mandir/man1/bup-init.1.* +%_mandir/man1/bup-join.1.* +%_mandir/man1/bup-ls.1.* +%_mandir/man1/bup-margin.1.* +%_mandir/man1/bup-memtest.1.* +%_mandir/man1/bup-meta.1.* +%_mandir/man1/bup-midx.1.* +%_mandir/man1/bup-mux.1.* +%_mandir/man1/bup-on.1.* +%_mandir/man1/bup-prune-older.1.* +%_mandir/man1/bup-random.1.* +%_mandir/man1/bup-restore.1.* +%_mandir/man1/bup-rm.1.* +%_mandir/man1/bup-save.1.* +%_mandir/man1/bup-server.1.* +%_mandir/man1/bup-split.1.* +%_mandir/man1/bup-tag.1.* +%_mandir/man1/bup-tick.1.* +%_mandir/man1/bup-validate-object-links.1.* +%_mandir/man1/bup-validate-ref-links.1.* +%_mandir/man1/bup-web.1.* +%_mandir/man1/bup.1.* +%_mandir/man5/bup-config.5.* diff --git a/anda/misc/bup/update.rhai b/anda/misc/bup/update.rhai new file mode 100644 index 0000000000..6c2d73a6cd --- /dev/null +++ b/anda/misc/bup/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("bup/bup")); diff --git a/anda/misc/extest/rust-extest.spec b/anda/misc/extest/rust-extest.spec index 5669af2f53..61b99ffd37 100644 --- a/anda/misc/extest/rust-extest.spec +++ b/anda/misc/extest/rust-extest.spec @@ -1,6 +1,6 @@ -%global commit 3faca3a192a823e3f6183e4aee4ca827c6d973ba +%global commit 185dc538691ddd16c949779a9af41d2513749045 %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global commit_date 20250725 +%global commit_date 20250903 %if 0%{?fedora} == 41 %ifarch %ix86 %global debug_package %{nil} diff --git a/anda/misc/pokeget/pokeget.spec b/anda/misc/pokeget/pokeget.spec index 7ffabbddb6..b804ef40aa 100644 --- a/anda/misc/pokeget/pokeget.spec +++ b/anda/misc/pokeget/pokeget.spec @@ -4,7 +4,7 @@ %bcond check 1 Name: %{crate} -Version: 1.6.5 +Version: 1.6.7 Release: 1%?dist SourceLicense: MIT License: (0BSD OR MIT OR Apache-2.0) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND (BSD-2-Clause OR Apache-2.0 OR MIT) AND BSD-2-Clause AND (MIT OR Apache-2.0 OR Zlib) AND (MIT OR Apache-2.0) AND (MIT OR Zlib OR Apache-2.0) AND MIT AND (Unlicense OR MIT) AND (Zlib OR Apache-2.0 OR MIT) diff --git a/anda/misc/pokemon-colorscripts/anda.hcl b/anda/misc/pokemon-colorscripts/anda.hcl index 15a80e2e12..70c4f2635c 100644 --- a/anda/misc/pokemon-colorscripts/anda.hcl +++ b/anda/misc/pokemon-colorscripts/anda.hcl @@ -3,4 +3,7 @@ project pkg { rpm { spec = "pokemon-colorscripts.spec" } + labels { + nightly = 1 + } } diff --git a/anda/misc/rust-motd/anda.hcl b/anda/misc/rust-motd/anda.hcl new file mode 100644 index 0000000000..4e15d350e7 --- /dev/null +++ b/anda/misc/rust-motd/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "rust-motd.spec" + } +} diff --git a/anda/misc/rust-motd/rust-motd.spec b/anda/misc/rust-motd/rust-motd.spec new file mode 100644 index 0000000000..e7feb18f42 --- /dev/null +++ b/anda/misc/rust-motd/rust-motd.spec @@ -0,0 +1,35 @@ +Name: rust-motd +Version: 2.1.1 +Release: 1%?dist +Summary: Beautiful, useful, configurable MOTD generation with zero runtime dependencies +URL: https://github.com/rust-motd/rust-motd +Source0: %url/archive/refs/tags/v%{version}.tar.gz +License: MIT +BuildRequires: cargo anda-srpm-macros cargo-rpm-macros mold perl + +Packager: Owen Zimmerman + +%description +%summary. + +%prep +%autosetup -n %{name}-%{version} +%cargo_prep_online + +%build +%cargo_build + +%install +%cargo_install +%cargo_license_summary_online +%{cargo_license_online -a} > LICENSE.dependencies + +%files +%doc README.md DEVELOPING.md CHANGELOG.md example_config.toml example_config.kdl +%license LICENSE +%license LICENSE.dependencies +%{_bindir}/rust-motd + +%changelog +* Thu Oct 23 2025 Owen Zimmerman +- Intial Commit diff --git a/anda/misc/rust-motd/update.rhai b/anda/misc/rust-motd/update.rhai new file mode 100644 index 0000000000..3b5f0039db --- /dev/null +++ b/anda/misc/rust-motd/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("rust-motd/rust-motd")); diff --git a/anda/misc/sass/sass.spec b/anda/misc/sass/sass.spec index 7223050704..9dd76117a4 100644 --- a/anda/misc/sass/sass.spec +++ b/anda/misc/sass/sass.spec @@ -4,7 +4,7 @@ %define _build_id_links none Name: sass -Version: 1.91.0 +Version: 1.94.2 Release: 1%?dist Summary: The reference implementation of Sass, written in Dart License: MIT diff --git a/anda/misc/senpai/anda.hcl b/anda/misc/senpai/anda.hcl new file mode 100644 index 0000000000..1b69a9e25a --- /dev/null +++ b/anda/misc/senpai/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "senpai.spec" + } +} diff --git a/anda/misc/senpai/org.sr.ht.delthas.senpai.metainfo.xml b/anda/misc/senpai/org.sr.ht.delthas.senpai.metainfo.xml new file mode 100644 index 0000000000..5b79efc1c5 --- /dev/null +++ b/anda/misc/senpai/org.sr.ht.delthas.senpai.metainfo.xml @@ -0,0 +1,35 @@ + + + org.sr.ht.delthas.senpai + CC0-1.0 + ISC + /usr/share/icons/hicolor/scalable/apps/senpai.svg + + senpai + Your everyday TUI IRC student + + +

+ senpai is an IRC client that works best with bouncers: +

+
    +
  • no logs are kept
  • +
  • history is fetched from the server via CHATHISTORY
  • +
  • networks are fetched from the server via bouncer-networks
  • +
  • messages can be searched in logs via SEARCH
  • +
  • files can be uploaded via FILEHOST (with drag & drop!)
  • +
+
+ +senpai.desktop + + https://sr.ht/~taiite/senpai/ + + text/javascript + text/typescript + + + + + +
diff --git a/anda/misc/senpai/senpai.spec b/anda/misc/senpai/senpai.spec new file mode 100644 index 0000000000..154d7f1271 --- /dev/null +++ b/anda/misc/senpai/senpai.spec @@ -0,0 +1,55 @@ +%global appid org.sr.ht.delthas.senpai + +Name: senpai +Version: 0.4.1 +Release: 2%?dist +Summary: Your everyday IRC student +License: ISC +URL: https://sr.ht/~delthas/senpai/ +Source0: https://github.com/delthas/senpai/archive/refs/tags/v%version.tar.gz +Source1: org.sr.ht.delthas.senpai.metainfo.xml +BuildRequires: golang scdoc gcc anda-srpm-macros terra-appstream-helper + +Packager: Owen Zimmerman + +%description +senpai is an IRC client that works best with bouncers: + + - no logs are kept, + - history is fetched from the server via CHATHISTORY, + - networks are fetched from the server via bouncer-networks, + - messages can be searched in logs via SEARCH, + - files can be uploaded via FILEHOST (with drag & drop!) + +%prep +%autosetup -n %{name}-%{version} + +%build +%make_build + +%install +install -Dm755 senpai %{buildroot}%{_bindir}/senpai +install -Dm644 doc/senpai.1 %{buildroot}%{_mandir}/man1/senpai.1 +install -Dm644 doc/senpai.5 %{buildroot}%{_mandir}/man5/senpai.5 +install -Dm644 contrib/senpai.desktop %{buildroot}%{_datadir}/applications/senpai.desktop +install -Dm644 res/icon.48.png %{buildroot}%{_iconsdir}/hicolor/48x48/apps/senpai.png +install -Dm644 res/icon.svg %{buildroot}%{_iconsdir}/hicolor/scalable/apps/senpai.svg + +%terra_appstream -o %{SOURCE1} + +%files +%doc README.md +%license LICENSE +%_bindir/senpai +%{_mandir}/man1/senpai.1.gz +%{_mandir}/man5/senpai.5.gz +%{_datadir}/applications/senpai.desktop +%{_iconsdir}/hicolor/48x48/apps/senpai.png +%{_iconsdir}/hicolor/scalable/apps/senpai.svg +%{_metainfodir}/org.sr.ht.delthas.senpai.metainfo.xml + +%changelog +* Tue Nov 18 2025 Owen Zimmerman +- Add metainfo +* Fri Oct 31 2025 Owen Zimmerman +- Initial commit diff --git a/anda/misc/senpai/update.rhai b/anda/misc/senpai/update.rhai new file mode 100644 index 0000000000..7427ad0a82 --- /dev/null +++ b/anda/misc/senpai/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("delthas/senpai")); diff --git a/anda/misc/shitpost/anda.hcl b/anda/misc/shitpost/anda.hcl new file mode 100644 index 0000000000..b9f3e6f6f8 --- /dev/null +++ b/anda/misc/shitpost/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "shitpost.spec" + } +} \ No newline at end of file diff --git a/anda/misc/shitpost/shitpost.spec b/anda/misc/shitpost/shitpost.spec new file mode 100644 index 0000000000..06e9c80e59 --- /dev/null +++ b/anda/misc/shitpost/shitpost.spec @@ -0,0 +1,28 @@ +Name: shitpost +Version: 1 +Release: 1%?dist +Summary: A tool to create memes using CLI +License: WTFPL +URL: https://redd.it/5ezk1f +Source0: https://raw.githubusercontent.com/magnus-ISU/aur-scripts/master/shitpost +Requires: bash +BuildArch: noarch + +Packager: Its-J + +%description +%{summary}. + +%prep + +%build + +%install +install -Dm 755 %{SOURCE0} %{buildroot}%{_bindir}/shitpost + +%files +%{_bindir}/shitpost + +%changelog +* Sun Nov 09 2025 Its-J +- Package shitpost diff --git a/anda/misc/zapret/zapret.spec b/anda/misc/zapret/zapret.spec index b1b5bc081b..078c0806b4 100644 --- a/anda/misc/zapret/zapret.spec +++ b/anda/misc/zapret/zapret.spec @@ -1,5 +1,5 @@ Name: zapret -Version: 71.4 +Version: 72.2 Release: 1%?dist Summary: A multi-platform Deep Packet Inspection (DPI) bypass tool License: MIT diff --git a/anda/multimedia/carla/Carla-nightly.spec b/anda/multimedia/carla/Carla-nightly.spec index 09d5ead0fd..0c1e8cf62c 100644 --- a/anda/multimedia/carla/Carla-nightly.spec +++ b/anda/multimedia/carla/Carla-nightly.spec @@ -1,8 +1,8 @@ %global pname carla %global ver 2.5.10 -%global commit 12bc40fd6c9c5b36481c7df55086b27ba9ae8a80 +%global commit a406f0044bc8c098475814abc1f379ed7e0545d6 %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global commit_date 20250901 +%global commit_date 20251111 Name: Carla-nightly Version: %(echo %ver | tr -d 'v')^%commit_date.git~%shortcommit diff --git a/anda/multimedia/ffmpeg/VERSION_LCEVCdec.txt b/anda/multimedia/ffmpeg/VERSION_LCEVCdec.txt new file mode 100644 index 0000000000..c4e41f9459 --- /dev/null +++ b/anda/multimedia/ffmpeg/VERSION_LCEVCdec.txt @@ -0,0 +1 @@ +4.0.3 diff --git a/anda/multimedia/ffmpeg/VERSION_libbluray.txt b/anda/multimedia/ffmpeg/VERSION_libbluray.txt new file mode 100644 index 0000000000..88c5fb891d --- /dev/null +++ b/anda/multimedia/ffmpeg/VERSION_libbluray.txt @@ -0,0 +1 @@ +1.4.0 diff --git a/anda/multimedia/ffmpeg/VERSION_svt-av1.txt b/anda/multimedia/ffmpeg/VERSION_svt-av1.txt new file mode 100644 index 0000000000..ef538c2810 --- /dev/null +++ b/anda/multimedia/ffmpeg/VERSION_svt-av1.txt @@ -0,0 +1 @@ +3.1.2 diff --git a/anda/multimedia/ffmpeg/VERSION_x264.txt b/anda/multimedia/ffmpeg/VERSION_x264.txt new file mode 100644 index 0000000000..cd71b913c4 --- /dev/null +++ b/anda/multimedia/ffmpeg/VERSION_x264.txt @@ -0,0 +1 @@ +0.165 diff --git a/anda/multimedia/ffmpeg/VERSION_xevd.txt b/anda/multimedia/ffmpeg/VERSION_xevd.txt new file mode 100644 index 0000000000..8f0916f768 --- /dev/null +++ b/anda/multimedia/ffmpeg/VERSION_xevd.txt @@ -0,0 +1 @@ +0.5.0 diff --git a/anda/multimedia/ffmpeg/VERSION_xeve.txt b/anda/multimedia/ffmpeg/VERSION_xeve.txt new file mode 100644 index 0000000000..4b9fcbec10 --- /dev/null +++ b/anda/multimedia/ffmpeg/VERSION_xeve.txt @@ -0,0 +1 @@ +0.5.1 diff --git a/anda/multimedia/ffmpeg/anda.hcl b/anda/multimedia/ffmpeg/anda.hcl index 44b1659420..002c167e92 100644 --- a/anda/multimedia/ffmpeg/anda.hcl +++ b/anda/multimedia/ffmpeg/anda.hcl @@ -2,11 +2,11 @@ project pkg { arches = ["x86_64", "aarch64", "i386"] rpm { spec = "ffmpeg.spec" - extra_repos = ["https://repos.fyralabs.com/terrarawhide-nvidia"] + extra_repos = ["https://repos.fyralabs.com/terrarawhide-nvidia", "https://repos.fyralabs.com/terrarawhide-multimedia"] } labels { updbranch = 1 mock = 1 - subrepo = "extras" + subrepo = "multimedia" } } diff --git a/anda/multimedia/ffmpeg/ffmpeg-HandBrake.patch b/anda/multimedia/ffmpeg/ffmpeg-HandBrake.patch index 0326da27f5..e34c256b10 100644 --- a/anda/multimedia/ffmpeg/ffmpeg-HandBrake.patch +++ b/anda/multimedia/ffmpeg/ffmpeg-HandBrake.patch @@ -1,7 +1,24 @@ -diff -Naur ffmpeg-7.1.1.old/configure ffmpeg-7.1.1/configure ---- ffmpeg-7.1.1.old/configure 2025-03-24 10:54:39.093543820 +0100 -+++ ffmpeg-7.1.1/configure 2025-03-24 10:54:39.281929795 +0100 -@@ -3338,6 +3338,7 @@ +diff -Naur ffmpeg-7.1.2.old/configure ffmpeg-7.1.2/configure +--- ffmpeg-7.1.2.old/configure 2025-10-27 10:07:02.407490033 +0100 ++++ ffmpeg-7.1.2/configure 2025-10-27 10:07:02.458434476 +0100 +@@ -2466,6 +2466,7 @@ + kCMVideoCodecType_HEVC + kCMVideoCodecType_HEVCWithAlpha + kCMVideoCodecType_VP9 ++ kCMVideoCodecType_AV1 + kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange + kCVPixelFormatType_422YpCbCr8BiPlanarVideoRange + kCVPixelFormatType_422YpCbCr10BiPlanarVideoRange +@@ -3172,6 +3173,8 @@ + av1_vaapi_hwaccel_select="av1_decoder" + av1_vdpau_hwaccel_deps="vdpau VdpPictureInfoAV1" + av1_vdpau_hwaccel_select="av1_decoder" ++av1_videotoolbox_hwaccel_deps="videotoolbox" ++av1_videotoolbox_hwaccel_select="av1_decoder" + av1_vulkan_hwaccel_deps="vulkan" + av1_vulkan_hwaccel_select="av1_decoder" + h263_vaapi_hwaccel_deps="vaapi" +@@ -3342,6 +3345,7 @@ av1_mediacodec_decoder_deps="mediacodec" av1_mediacodec_encoder_deps="mediacodec" av1_mediacodec_encoder_select="extract_extradata_bsf" @@ -9,9 +26,461 @@ diff -Naur ffmpeg-7.1.1.old/configure ffmpeg-7.1.1/configure av1_nvenc_encoder_deps="nvenc NV_ENC_PIC_PARAMS_AV1" av1_nvenc_encoder_select="atsc_a53" av1_qsv_decoder_select="qsvdec" -diff -Naur ffmpeg-7.1.1.old/libavcodec/allcodecs.c ffmpeg-7.1.1/libavcodec/allcodecs.c ---- ffmpeg-7.1.1.old/libavcodec/allcodecs.c 2025-03-24 10:54:39.094862193 +0100 -+++ ffmpeg-7.1.1/libavcodec/allcodecs.c 2025-03-24 10:54:39.282298069 +0100 +@@ -6724,6 +6728,7 @@ + check_func_headers CoreMedia/CMFormatDescription.h kCMVideoCodecType_HEVC "-framework CoreMedia" + check_func_headers CoreMedia/CMFormatDescription.h kCMVideoCodecType_HEVCWithAlpha "-framework CoreMedia" + check_func_headers CoreMedia/CMFormatDescription.h kCMVideoCodecType_VP9 "-framework CoreMedia" ++ check_func_headers CoreMedia/CMFormatDescription.h kCMVideoCodecType_AV1 "-framework CoreMedia" + check_func_headers CoreVideo/CVPixelBuffer.h kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange "-framework CoreVideo" + check_func_headers CoreVideo/CVPixelBuffer.h kCVPixelFormatType_422YpCbCr8BiPlanarVideoRange "-framework CoreVideo" + check_func_headers CoreVideo/CVPixelBuffer.h kCVPixelFormatType_422YpCbCr10BiPlanarVideoRange "-framework CoreVideo" +diff -Naur ffmpeg-7.1.2.old/libavcodec/ac3dec.c ffmpeg-7.1.2/libavcodec/ac3dec.c +--- ffmpeg-7.1.2.old/libavcodec/ac3dec.c 2025-10-27 10:07:00.254471036 +0100 ++++ ffmpeg-7.1.2/libavcodec/ac3dec.c 2025-10-27 10:07:02.463169316 +0100 +@@ -253,72 +253,6 @@ + } + + /** +- * Parse the 'sync info' and 'bit stream info' from the AC-3 bitstream. +- * GetBitContext within AC3DecodeContext must point to +- * the start of the synchronized AC-3 bitstream. +- */ +-static int ac3_parse_header(AC3DecodeContext *s) +-{ +- GetBitContext *gbc = &s->gbc; +- int i; +- +- /* read the rest of the bsi. read twice for dual mono mode. */ +- i = !s->channel_mode; +- do { +- s->dialog_normalization[(!s->channel_mode)-i] = -get_bits(gbc, 5); +- if (s->dialog_normalization[(!s->channel_mode)-i] == 0) { +- s->dialog_normalization[(!s->channel_mode)-i] = -31; +- } +- if (s->target_level != 0) { +- s->level_gain[(!s->channel_mode)-i] = powf(2.0f, +- (float)(s->target_level - +- s->dialog_normalization[(!s->channel_mode)-i])/6.0f); +- } +- if (s->compression_exists[(!s->channel_mode)-i] = get_bits1(gbc)) { +- s->heavy_dynamic_range[(!s->channel_mode)-i] = +- AC3_HEAVY_RANGE(get_bits(gbc, 8)); +- } +- if (get_bits1(gbc)) +- skip_bits(gbc, 8); //skip language code +- if (get_bits1(gbc)) +- skip_bits(gbc, 7); //skip audio production information +- } while (i--); +- +- skip_bits(gbc, 2); //skip copyright bit and original bitstream bit +- +- /* skip the timecodes or parse the Alternate Bit Stream Syntax */ +- if (s->bitstream_id != 6) { +- if (get_bits1(gbc)) +- skip_bits(gbc, 14); //skip timecode1 +- if (get_bits1(gbc)) +- skip_bits(gbc, 14); //skip timecode2 +- } else { +- if (get_bits1(gbc)) { +- s->preferred_downmix = get_bits(gbc, 2); +- s->center_mix_level_ltrt = get_bits(gbc, 3); +- s->surround_mix_level_ltrt = av_clip(get_bits(gbc, 3), 3, 7); +- s->center_mix_level = get_bits(gbc, 3); +- s->surround_mix_level = av_clip(get_bits(gbc, 3), 3, 7); +- } +- if (get_bits1(gbc)) { +- s->dolby_surround_ex_mode = get_bits(gbc, 2); +- s->dolby_headphone_mode = get_bits(gbc, 2); +- skip_bits(gbc, 10); // skip adconvtyp (1), xbsi2 (8), encinfo (1) +- } +- } +- +- /* skip additional bitstream info */ +- if (get_bits1(gbc)) { +- i = get_bits(gbc, 6); +- do { +- skip_bits(gbc, 8); +- } while (i--); +- } +- +- return 0; +-} +- +-/** + * Common function to parse AC-3 or E-AC-3 frame header + */ + static int parse_frame_header(AC3DecodeContext *s) +@@ -375,10 +309,25 @@ + s->dba_syntax = 1; + s->skip_syntax = 1; + memset(s->channel_uses_aht, 0, sizeof(s->channel_uses_aht)); +- return ac3_parse_header(s); ++ /* volume control params */ ++ for (int i = 0; i < (s->channel_mode ? 1 : 2); i++) { ++ s->dialog_normalization[i] = hdr.dialog_normalization[i]; ++ if (s->dialog_normalization[i] == 0) { ++ s->dialog_normalization[i] = -31; ++ } ++ if (s->target_level != 0) { ++ s->level_gain[i] = powf(2.0f, ++ (float)(s->target_level - s->dialog_normalization[i])/6.0f); ++ } ++ s->compression_exists[i] = hdr.compression_exists[i]; ++ if (s->compression_exists[i]) { ++ s->heavy_dynamic_range[i] = AC3_HEAVY_RANGE(hdr.heavy_dynamic_range[i]); ++ } ++ } ++ return 0; + } else if (CONFIG_EAC3_DECODER) { + s->eac3 = 1; +- return ff_eac3_parse_header(s); ++ return ff_eac3_parse_header(s, &hdr); + } else { + av_log(s->avctx, AV_LOG_ERROR, "E-AC-3 support not compiled in\n"); + return AVERROR(ENOSYS); +@@ -1562,6 +1511,9 @@ + av_log(avctx, AV_LOG_ERROR, "invalid frame type\n"); + } + break; ++ case AC3_PARSE_ERROR_CHANNEL_MAP: ++ av_log(avctx, AV_LOG_ERROR, "invalid channel map\n"); ++ return AVERROR_INVALIDDATA; + case AC3_PARSE_ERROR_CRC: + break; + default: // Normal AVERROR do not try to recover. +diff -Naur ffmpeg-7.1.2.old/libavcodec/ac3dec.h ffmpeg-7.1.2/libavcodec/ac3dec.h +--- ffmpeg-7.1.2.old/libavcodec/ac3dec.h 2025-10-27 10:07:00.587473974 +0100 ++++ ffmpeg-7.1.2/libavcodec/ac3dec.h 2025-10-27 10:07:02.463287298 +0100 +@@ -255,11 +255,12 @@ + AVChannelLayout downmix_layout; + } AC3DecodeContext; + ++struct AC3HeaderInfo; + /** + * Parse the E-AC-3 frame header. + * This parses both the bit stream info and audio frame header. + */ +-static int ff_eac3_parse_header(AC3DecodeContext *s); ++static int ff_eac3_parse_header(AC3DecodeContext *s, const struct AC3HeaderInfo *hdr); + + /** + * Decode mantissas in a single channel for the entire frame. +diff -Naur ffmpeg-7.1.2.old/libavcodec/ac3defs.h ffmpeg-7.1.2/libavcodec/ac3defs.h +--- ffmpeg-7.1.2.old/libavcodec/ac3defs.h 2025-10-27 10:07:00.586473965 +0100 ++++ ffmpeg-7.1.2/libavcodec/ac3defs.h 2025-10-27 10:07:02.463340118 +0100 +@@ -34,6 +34,8 @@ + #define AC3_CRITICAL_BANDS 50 + #define AC3_MAX_CPL_BANDS 18 + ++#define EAC3_SR_CODE_REDUCED 3 ++ + /* exponent encoding strategy */ + #define EXP_REUSE 0 + #define EXP_NEW 1 +diff -Naur ffmpeg-7.1.2.old/libavcodec/ac3_parser.c ffmpeg-7.1.2/libavcodec/ac3_parser.c +--- ffmpeg-7.1.2.old/libavcodec/ac3_parser.c 2025-10-27 10:07:00.290471354 +0100 ++++ ffmpeg-7.1.2/libavcodec/ac3_parser.c 2025-10-27 10:07:02.462962336 +0100 +@@ -73,6 +73,217 @@ + return i; + } + ++/** ++ * Parse the 'sync info' and 'bit stream info' from the AC-3 bitstream. ++ * GetBitContext within AC3DecodeContext must point to ++ * the start of the synchronized AC-3 bitstream. ++ */ ++static int ac3_parse_header(GetBitContext *gbc, AC3HeaderInfo *hdr) ++{ ++ /* read the rest of the bsi. read twice for dual mono mode. */ ++ for (int i = 0; i < (hdr->channel_mode ? 1 : 2); i++) { ++ hdr->dialog_normalization[i] = -get_bits(gbc, 5); ++ hdr->compression_exists[i] = get_bits1(gbc); ++ if (hdr->compression_exists[i]) ++ hdr->heavy_dynamic_range[i] = get_bits(gbc, 8); ++ if (get_bits1(gbc)) ++ skip_bits(gbc, 8); //skip language code ++ if (get_bits1(gbc)) ++ skip_bits(gbc, 7); //skip audio production information ++ } ++ ++ skip_bits(gbc, 2); //skip copyright bit and original bitstream bit ++ ++ /* skip the timecodes or parse the Alternate Bit Stream Syntax */ ++ if (hdr->bitstream_id != 6) { ++ if (get_bits1(gbc)) ++ skip_bits(gbc, 14); //skip timecode1 ++ if (get_bits1(gbc)) ++ skip_bits(gbc, 14); //skip timecode2 ++ } else { ++ if (get_bits1(gbc)) { ++ hdr->preferred_downmix = get_bits(gbc, 2); ++ hdr->center_mix_level_ltrt = get_bits(gbc, 3); ++ hdr->surround_mix_level_ltrt = av_clip(get_bits(gbc, 3), 3, 7); ++ hdr->center_mix_level = get_bits(gbc, 3); ++ hdr->surround_mix_level = av_clip(get_bits(gbc, 3), 3, 7); ++ } ++ if (get_bits1(gbc)) { ++ hdr->dolby_surround_ex_mode = get_bits(gbc, 2); ++ hdr->dolby_headphone_mode = get_bits(gbc, 2); ++ skip_bits(gbc, 10); // skip adconvtyp (1), xbsi2 (8), encinfo (1) ++ } ++ } ++ ++ /* skip additional bitstream info */ ++ if (get_bits1(gbc)) { ++ int i = get_bits(gbc, 6); ++ do { ++ skip_bits(gbc, 8); ++ } while (i--); ++ } ++ ++ return 0; ++} ++ ++static int eac3_parse_header(GetBitContext *gbc, AC3HeaderInfo *hdr) ++{ ++ if (hdr->frame_type == EAC3_FRAME_TYPE_RESERVED) ++ return AC3_PARSE_ERROR_FRAME_TYPE; ++ if (hdr->substreamid) ++ return AC3_PARSE_ERROR_FRAME_TYPE; ++ ++ skip_bits(gbc, 5); // skip bitstream id ++ ++ /* volume control params */ ++ for (int i = 0; i < (hdr->channel_mode ? 1 : 2); i++) { ++ hdr->dialog_normalization[i] = -get_bits(gbc, 5); ++ hdr->compression_exists[i] = get_bits1(gbc); ++ if (hdr->compression_exists[i]) ++ hdr->heavy_dynamic_range[i] = get_bits(gbc, 8); ++ } ++ ++ /* dependent stream channel map */ ++ if (hdr->frame_type == EAC3_FRAME_TYPE_DEPENDENT) { ++ hdr->channel_map_present = get_bits1(gbc); ++ if (hdr->channel_map_present) { ++ int64_t channel_layout = 0; ++ int channel_map = get_bits(gbc, 16); ++ ++ for (int i = 0; i < 16; i++) ++ if (channel_map & (1 << (EAC3_MAX_CHANNELS - i - 1))) ++ channel_layout |= ff_eac3_custom_channel_map_locations[i][1]; ++ ++ if (av_popcount64(channel_layout) > EAC3_MAX_CHANNELS) { ++ return AC3_PARSE_ERROR_CHANNEL_MAP; ++ } ++ hdr->channel_map = channel_map; ++ } ++ } ++ ++ /* mixing metadata */ ++ if (get_bits1(gbc)) { ++ /* center and surround mix levels */ ++ if (hdr->channel_mode > AC3_CHMODE_STEREO) { ++ hdr->preferred_downmix = get_bits(gbc, 2); ++ if (hdr->channel_mode & 1) { ++ /* if three front channels exist */ ++ hdr->center_mix_level_ltrt = get_bits(gbc, 3); ++ hdr->center_mix_level = get_bits(gbc, 3); ++ } ++ if (hdr->channel_mode & 4) { ++ /* if a surround channel exists */ ++ hdr->surround_mix_level_ltrt = av_clip(get_bits(gbc, 3), 3, 7); ++ hdr->surround_mix_level = av_clip(get_bits(gbc, 3), 3, 7); ++ } ++ } ++ ++ /* lfe mix level */ ++ if (hdr->lfe_on && (hdr->lfe_mix_level_exists = get_bits1(gbc))) { ++ hdr->lfe_mix_level = get_bits(gbc, 5); ++ } ++ ++ /* info for mixing with other streams and substreams */ ++ if (hdr->frame_type == EAC3_FRAME_TYPE_INDEPENDENT) { ++ for (int i = 0; i < (hdr->channel_mode ? 1 : 2); i++) { ++ // TODO: apply program scale factor ++ if (get_bits1(gbc)) { ++ skip_bits(gbc, 6); // skip program scale factor ++ } ++ } ++ if (get_bits1(gbc)) { ++ skip_bits(gbc, 6); // skip external program scale factor ++ } ++ /* skip mixing parameter data */ ++ switch(get_bits(gbc, 2)) { ++ case 1: skip_bits(gbc, 5); break; ++ case 2: skip_bits(gbc, 12); break; ++ case 3: { ++ int mix_data_size = (get_bits(gbc, 5) + 2) << 3; ++ skip_bits_long(gbc, mix_data_size); ++ break; ++ } ++ } ++ /* skip pan information for mono or dual mono source */ ++ if (hdr->channel_mode < AC3_CHMODE_STEREO) { ++ for (int i = 0; i < (hdr->channel_mode ? 1 : 2); i++) { ++ if (get_bits1(gbc)) { ++ /* note: this is not in the ATSC A/52B specification ++ reference: ETSI TS 102 366 V1.1.1 ++ section: E.1.3.1.25 */ ++ skip_bits(gbc, 8); // skip pan mean direction index ++ skip_bits(gbc, 6); // skip reserved paninfo bits ++ } ++ } ++ } ++ /* skip mixing configuration information */ ++ if (get_bits1(gbc)) { ++ for (int i = 0; i < hdr->num_blocks; i++) { ++ if (hdr->num_blocks == 1 || get_bits1(gbc)) { ++ skip_bits(gbc, 5); ++ } ++ } ++ } ++ } ++ } ++ ++ /* informational metadata */ ++ if (get_bits1(gbc)) { ++ hdr->bitstream_mode = get_bits(gbc, 3); ++ skip_bits(gbc, 2); // skip copyright bit and original bitstream bit ++ if (hdr->channel_mode == AC3_CHMODE_STEREO) { ++ hdr->dolby_surround_mode = get_bits(gbc, 2); ++ hdr->dolby_headphone_mode = get_bits(gbc, 2); ++ } ++ if (hdr->channel_mode >= AC3_CHMODE_2F2R) { ++ hdr->dolby_surround_ex_mode = get_bits(gbc, 2); ++ } ++ for (int i = 0; i < (hdr->channel_mode ? 1 : 2); i++) { ++ if (get_bits1(gbc)) { ++ skip_bits(gbc, 8); // skip mix level, room type, and A/D converter type ++ } ++ } ++ if (hdr->sr_code != EAC3_SR_CODE_REDUCED) { ++ skip_bits1(gbc); // skip source sample rate code ++ } ++ } ++ ++ /* converter synchronization flag ++ If frames are less than six blocks, this bit should be turned on ++ once every 6 blocks to indicate the start of a frame set. ++ reference: RFC 4598, Section 2.1.3 Frame Sets */ ++ if (hdr->frame_type == EAC3_FRAME_TYPE_INDEPENDENT && hdr->num_blocks != 6) { ++ skip_bits1(gbc); // skip converter synchronization flag ++ } ++ ++ /* original frame size code if this stream was converted from AC-3 */ ++ if (hdr->frame_type == EAC3_FRAME_TYPE_AC3_CONVERT && ++ (hdr->num_blocks == 6 || get_bits1(gbc))) { ++ skip_bits(gbc, 6); // skip frame size code ++ } ++ ++ /* additional bitstream info */ ++ if (get_bits1(gbc)) { ++ int addbsil = get_bits(gbc, 6); ++ for (int i = 0; i < addbsil + 1; i++) { ++ if (i == 0) { ++ /* In this 8 bit chunk, the LSB is equal to flag_ec3_extension_type_a ++ which can be used to detect Atmos presence */ ++ skip_bits(gbc, 7); ++ hdr->eac3_extension_type_a = get_bits1(gbc); ++ if (hdr->eac3_extension_type_a) { ++ hdr->complexity_index_type_a = get_bits(gbc, 8); ++ i++; ++ } ++ } else { ++ skip_bits(gbc, 8); // skip additional bit stream info ++ } ++ } ++ } ++ ++ return 0; ++} ++ + int ff_ac3_parse_header(GetBitContext *gbc, AC3HeaderInfo *hdr) + { + int frame_size_code; +@@ -133,6 +344,10 @@ + hdr->frame_size = ff_ac3_frame_size_tab[frame_size_code][hdr->sr_code] * 2; + hdr->frame_type = EAC3_FRAME_TYPE_AC3_CONVERT; //EAC3_FRAME_TYPE_INDEPENDENT; + hdr->substreamid = 0; ++ ++ int ret = ac3_parse_header(gbc, hdr); ++ if (ret < 0) ++ return ret; + } else { + /* Enhanced AC-3 */ + hdr->crc1 = 0; +@@ -165,6 +380,10 @@ + hdr->bit_rate = 8LL * hdr->frame_size * hdr->sample_rate / + (hdr->num_blocks * 256); + hdr->channels = ff_ac3_channels_tab[hdr->channel_mode] + hdr->lfe_on; ++ ++ int ret = eac3_parse_header(gbc, hdr); ++ if (ret < 0) ++ return ret; + } + hdr->channel_layout = ff_ac3_channel_layout_tab[hdr->channel_mode]; + if (hdr->lfe_on) +@@ -202,9 +421,13 @@ + { + GetBitContext gb; + AC3HeaderInfo hdr; ++ uint8_t tmp[32 + AV_INPUT_BUFFER_PADDING_SIZE]; + int err; + +- err = init_get_bits8(&gb, buf, size); ++ size = FFMIN(32, size); ++ memcpy(tmp, buf, size); ++ memset(tmp + size, 0, AV_INPUT_BUFFER_PADDING_SIZE); ++ err = init_get_bits8(&gb, tmp, size); + if (err < 0) + return AVERROR_INVALIDDATA; + err = ff_ac3_parse_header(&gb, &hdr); +diff -Naur ffmpeg-7.1.2.old/libavcodec/ac3_parser_internal.h ffmpeg-7.1.2/libavcodec/ac3_parser_internal.h +--- ffmpeg-7.1.2.old/libavcodec/ac3_parser_internal.h 2025-10-27 10:07:00.519473374 +0100 ++++ ffmpeg-7.1.2/libavcodec/ac3_parser_internal.h 2025-10-27 10:07:02.463059088 +0100 +@@ -46,6 +46,7 @@ + int substreamid; ///< substream identification + int center_mix_level; ///< Center mix level index + int surround_mix_level; ///< Surround mix level index ++ uint8_t channel_map_present; + uint16_t channel_map; + int num_blocks; ///< number of audio blocks + int dolby_surround_mode; +@@ -62,6 +63,23 @@ + uint64_t channel_layout; + int8_t ac3_bit_rate_code; + /** @} */ ++ ++ /** @name enhanced eac3 extension coded elements ++ * @{ ++ */ ++ int8_t dialog_normalization[2]; ++ uint8_t compression_exists[2]; ++ uint8_t heavy_dynamic_range[2]; ++ uint8_t center_mix_level_ltrt; ///< Center mix level index ++ uint8_t surround_mix_level_ltrt; ///< Surround mix level index ++ uint8_t dolby_headphone_mode; ++ uint8_t dolby_surround_ex_mode; ++ uint8_t lfe_mix_level_exists; ++ uint8_t lfe_mix_level; ++ uint8_t preferred_downmix; ++ uint8_t eac3_extension_type_a; ++ uint8_t complexity_index_type_a; ++ /** @} */ + } AC3HeaderInfo; + + typedef enum { +@@ -71,6 +89,7 @@ + AC3_PARSE_ERROR_FRAME_SIZE = -0x4030c0a, + AC3_PARSE_ERROR_FRAME_TYPE = -0x5030c0a, + AC3_PARSE_ERROR_CRC = -0x6030c0a, ++ AC3_PARSE_ERROR_CHANNEL_MAP = -0x7030c0a, + } AC3ParseError; + + /** +diff -Naur ffmpeg-7.1.2.old/libavcodec/allcodecs.c ffmpeg-7.1.2/libavcodec/allcodecs.c +--- ffmpeg-7.1.2.old/libavcodec/allcodecs.c 2025-10-27 10:07:01.864539025 +0100 ++++ ffmpeg-7.1.2/libavcodec/allcodecs.c 2025-10-27 10:07:02.458796899 +0100 @@ -839,6 +839,7 @@ extern const FFCodec ff_av1_qsv_decoder; extern const FFCodec ff_av1_qsv_encoder; @@ -20,9 +489,9 @@ diff -Naur ffmpeg-7.1.1.old/libavcodec/allcodecs.c ffmpeg-7.1.1/libavcodec/allco extern const FFCodec ff_av1_vaapi_encoder; extern const FFCodec ff_libopenh264_encoder; extern const FFCodec ff_libopenh264_decoder; -diff -Naur ffmpeg-7.1.1.old/libavcodec/amfenc_av1.c ffmpeg-7.1.1/libavcodec/amfenc_av1.c ---- ffmpeg-7.1.1.old/libavcodec/amfenc_av1.c 2025-03-24 10:54:38.133756381 +0100 -+++ ffmpeg-7.1.1/libavcodec/amfenc_av1.c 2025-03-24 10:54:39.277830845 +0100 +diff -Naur ffmpeg-7.1.2.old/libavcodec/amfenc_av1.c ffmpeg-7.1.2/libavcodec/amfenc_av1.c +--- ffmpeg-7.1.2.old/libavcodec/amfenc_av1.c 2025-10-27 10:07:00.536473524 +0100 ++++ ffmpeg-7.1.2/libavcodec/amfenc_av1.c 2025-10-27 10:07:02.440481173 +0100 @@ -116,6 +116,7 @@ { "none", "no adaptive quantization", 0, AV_OPT_TYPE_CONST, {.i64 = AMF_VIDEO_ENCODER_AV1_AQ_MODE_NONE }, 0, 0, VE, .unit = "adaptive_quantisation_mode" }, { "caq", "context adaptive quantization", 0, AV_OPT_TYPE_CONST, {.i64 = AMF_VIDEO_ENCODER_AV1_AQ_MODE_CAQ }, 0, 0, VE, .unit = "adaptive_quantisation_mode" }, @@ -69,9 +538,9 @@ diff -Naur ffmpeg-7.1.1.old/libavcodec/amfenc_av1.c ffmpeg-7.1.1/libavcodec/amfe profile_level = avctx->level; if (profile_level == AV_LEVEL_UNKNOWN) { -diff -Naur ffmpeg-7.1.1.old/libavcodec/amfenc.c ffmpeg-7.1.1/libavcodec/amfenc.c ---- ffmpeg-7.1.1.old/libavcodec/amfenc.c 2025-03-24 10:54:38.032755166 +0100 -+++ ffmpeg-7.1.1/libavcodec/amfenc.c 2025-03-24 10:54:39.279550845 +0100 +diff -Naur ffmpeg-7.1.2.old/libavcodec/amfenc.c ffmpeg-7.1.2/libavcodec/amfenc.c +--- ffmpeg-7.1.2.old/libavcodec/amfenc.c 2025-10-27 10:07:00.387472209 +0100 ++++ ffmpeg-7.1.2/libavcodec/amfenc.c 2025-10-27 10:07:02.445244447 +0100 @@ -415,10 +415,6 @@ else pix_fmt = avctx->pix_fmt; @@ -251,9 +720,9 @@ diff -Naur ffmpeg-7.1.1.old/libavcodec/amfenc.c ffmpeg-7.1.1/libavcodec/amfenc.c int ff_amf_get_color_profile(AVCodecContext *avctx) { amf_int64 color_profile = AMF_VIDEO_CONVERTER_COLOR_PROFILE_UNKNOWN; -diff -Naur ffmpeg-7.1.1.old/libavcodec/amfenc.h ffmpeg-7.1.1/libavcodec/amfenc.h ---- ffmpeg-7.1.1.old/libavcodec/amfenc.h 2025-03-24 10:54:37.990754660 +0100 -+++ ffmpeg-7.1.1/libavcodec/amfenc.h 2025-03-24 10:54:39.277763348 +0100 +diff -Naur ffmpeg-7.1.2.old/libavcodec/amfenc.h ffmpeg-7.1.2/libavcodec/amfenc.h +--- ffmpeg-7.1.2.old/libavcodec/amfenc.h 2025-10-27 10:07:00.322471636 +0100 ++++ ffmpeg-7.1.2/libavcodec/amfenc.h 2025-10-27 10:07:02.440421671 +0100 @@ -114,6 +114,7 @@ int max_b_frames; int qvbr_quality_level; @@ -271,9 +740,9 @@ diff -Naur ffmpeg-7.1.1.old/libavcodec/amfenc.h ffmpeg-7.1.1/libavcodec/amfenc.h int ff_amf_get_color_profile(AVCodecContext *avctx); /** -diff -Naur ffmpeg-7.1.1.old/libavcodec/amfenc_h264.c ffmpeg-7.1.1/libavcodec/amfenc_h264.c ---- ffmpeg-7.1.1.old/libavcodec/amfenc_h264.c 2025-03-24 10:54:38.175756886 +0100 -+++ ffmpeg-7.1.1/libavcodec/amfenc_h264.c 2025-03-24 10:54:39.277925894 +0100 +diff -Naur ffmpeg-7.1.2.old/libavcodec/amfenc_h264.c ffmpeg-7.1.2/libavcodec/amfenc_h264.c +--- ffmpeg-7.1.2.old/libavcodec/amfenc_h264.c 2025-10-27 10:07:00.604474124 +0100 ++++ ffmpeg-7.1.2/libavcodec/amfenc_h264.c 2025-10-27 10:07:02.440571423 +0100 @@ -133,6 +133,7 @@ { "me_half_pel", "Enable ME Half Pixel", OFFSET(me_half_pel), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, VE }, { "me_quarter_pel", "Enable ME Quarter Pixel", OFFSET(me_quarter_pel),AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, VE }, @@ -314,9 +783,9 @@ diff -Naur ffmpeg-7.1.1.old/libavcodec/amfenc_h264.c ffmpeg-7.1.1/libavcodec/amf // autodetect rate control method if (ctx->rate_control_mode == AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_UNKNOWN) { -diff -Naur ffmpeg-7.1.1.old/libavcodec/amfenc_hevc.c ffmpeg-7.1.1/libavcodec/amfenc_hevc.c ---- ffmpeg-7.1.1.old/libavcodec/amfenc_hevc.c 2025-03-24 10:54:37.991754672 +0100 -+++ ffmpeg-7.1.1/libavcodec/amfenc_hevc.c 2025-03-24 10:54:39.278019962 +0100 +diff -Naur ffmpeg-7.1.2.old/libavcodec/amfenc_hevc.c ffmpeg-7.1.2/libavcodec/amfenc_hevc.c +--- ffmpeg-7.1.2.old/libavcodec/amfenc_hevc.c 2025-10-27 10:07:00.324471654 +0100 ++++ ffmpeg-7.1.2/libavcodec/amfenc_hevc.c 2025-10-27 10:07:02.440657756 +0100 @@ -100,6 +100,7 @@ { "me_half_pel", "Enable ME Half Pixel", OFFSET(me_half_pel), AV_OPT_TYPE_BOOL,{ .i64 = -1 }, -1, 1, VE }, { "me_quarter_pel", "Enable ME Quarter Pixel ", OFFSET(me_quarter_pel),AV_OPT_TYPE_BOOL,{ .i64 = -1 }, -1, 1, VE }, @@ -362,10 +831,38 @@ diff -Naur ffmpeg-7.1.1.old/libavcodec/amfenc_hevc.c ffmpeg-7.1.1/libavcodec/amf // Picture control properties AMF_ASSIGN_PROPERTY_INT64(res, ctx->encoder, AMF_VIDEO_ENCODER_HEVC_NUM_GOPS_PER_IDR, ctx->gops_per_idr); -diff -Naur ffmpeg-7.1.1.old/libavcodec/av1dec.c ffmpeg-7.1.1/libavcodec/av1dec.c ---- ffmpeg-7.1.1.old/libavcodec/av1dec.c 2025-03-24 10:54:38.093755899 +0100 -+++ ffmpeg-7.1.1/libavcodec/av1dec.c 2025-03-24 10:54:39.273932914 +0100 -@@ -1002,6 +1002,8 @@ +diff -Naur ffmpeg-7.1.2.old/libavcodec/av1dec.c ffmpeg-7.1.2/libavcodec/av1dec.c +--- ffmpeg-7.1.2.old/libavcodec/av1dec.c 2025-10-27 10:07:00.478473013 +0100 ++++ ffmpeg-7.1.2/libavcodec/av1dec.c 2025-10-27 10:07:02.454638605 +0100 +@@ -541,6 +541,7 @@ + CONFIG_AV1_NVDEC_HWACCEL + \ + CONFIG_AV1_VAAPI_HWACCEL + \ + CONFIG_AV1_VDPAU_HWACCEL + \ ++ CONFIG_AV1_VIDEOTOOLBOX_HWACCEL + \ + CONFIG_AV1_VULKAN_HWACCEL) + enum AVPixelFormat pix_fmts[HWACCEL_MAX + 2], *fmtp = pix_fmts; + +@@ -568,6 +569,9 @@ + #if CONFIG_AV1_VDPAU_HWACCEL + *fmtp++ = AV_PIX_FMT_VDPAU; + #endif ++#if CONFIG_AV1_VIDEOTOOLBOX_HWACCEL ++ *fmtp++ = AV_PIX_FMT_VIDEOTOOLBOX; ++#endif + #if CONFIG_AV1_VULKAN_HWACCEL + *fmtp++ = AV_PIX_FMT_VULKAN; + #endif +@@ -592,6 +596,9 @@ + #if CONFIG_AV1_VDPAU_HWACCEL + *fmtp++ = AV_PIX_FMT_VDPAU; + #endif ++#if CONFIG_AV1_VIDEOTOOLBOX_HWACCEL ++ *fmtp++ = AV_PIX_FMT_VIDEOTOOLBOX; ++#endif + #if CONFIG_AV1_VULKAN_HWACCEL + *fmtp++ = AV_PIX_FMT_VULKAN; + #endif +@@ -1002,6 +1009,8 @@ break; } case ITU_T_T35_PROVIDER_CODE_DOLBY: { @@ -374,7 +871,7 @@ diff -Naur ffmpeg-7.1.1.old/libavcodec/av1dec.c ffmpeg-7.1.1/libavcodec/av1dec.c int provider_oriented_code = bytestream2_get_be32(&gb); if (itut_t35->itu_t_t35_country_code != ITU_T_T35_COUNTRY_CODE_US || provider_oriented_code != 0x800) -@@ -1014,6 +1016,18 @@ +@@ -1014,6 +1023,18 @@ break; // ignore } @@ -393,9 +890,79 @@ diff -Naur ffmpeg-7.1.1.old/libavcodec/av1dec.c ffmpeg-7.1.1/libavcodec/av1dec.c ret = ff_dovi_attach_side_data(&s->dovi, frame); if (ret < 0) return ret; -diff -Naur ffmpeg-7.1.1.old/libavcodec/bsf/hevc_mp4toannexb.c ffmpeg-7.1.1/libavcodec/bsf/hevc_mp4toannexb.c ---- ffmpeg-7.1.1.old/libavcodec/bsf/hevc_mp4toannexb.c 2025-03-24 10:54:38.075755683 +0100 -+++ ffmpeg-7.1.1/libavcodec/bsf/hevc_mp4toannexb.c 2025-03-24 10:54:39.273106358 +0100 +@@ -1439,6 +1460,10 @@ + + if (raw_tile_group && (s->tile_num == raw_tile_group->tg_end + 1)) { + int show_frame = s->raw_frame_header->show_frame; ++ // Set nb_unit to point at the next OBU, to indicate which ++ // OBUs have been processed for this current frame. (If this ++ // frame gets output, we set nb_unit to this value later too.) ++ s->nb_unit = i + 1; + if (avctx->hwaccel && s->cur_frame.f) { + ret = FF_HW_SIMPLE_CALL(avctx, end_frame); + if (ret < 0) { +@@ -1449,6 +1474,8 @@ + + update_reference_list(avctx); + ++ // Set start_unit to indicate the first OBU of the next frame. ++ s->start_unit = s->nb_unit; + raw_tile_group = NULL; + s->raw_frame_header = NULL; + +@@ -1478,7 +1505,7 @@ + s->raw_frame_header = NULL; + av_packet_unref(s->pkt); + ff_cbs_fragment_reset(&s->current_obu); +- s->nb_unit = 0; ++ s->nb_unit = s->start_unit = 0; + } + if (!ret && !frame->buf[0]) + ret = AVERROR(EAGAIN); +@@ -1505,7 +1532,7 @@ + return ret; + } + +- s->nb_unit = 0; ++ s->nb_unit = s->start_unit = 0; + av_log(avctx, AV_LOG_DEBUG, "Total OBUs on this packet: %d.\n", + s->current_obu.nb_units); + } +@@ -1526,7 +1553,7 @@ + + av1_frame_unref(&s->cur_frame); + s->operating_point_idc = 0; +- s->nb_unit = 0; ++ s->nb_unit = s->start_unit = 0; + s->raw_frame_header = NULL; + s->raw_seq = NULL; + s->cll = NULL; +@@ -1594,6 +1621,9 @@ + #if CONFIG_AV1_VDPAU_HWACCEL + HWACCEL_VDPAU(av1), + #endif ++#if CONFIG_AV1_VIDEOTOOLBOX_HWACCEL ++ HWACCEL_VIDEOTOOLBOX(av1), ++#endif + #if CONFIG_AV1_VULKAN_HWACCEL + HWACCEL_VULKAN(av1), + #endif +diff -Naur ffmpeg-7.1.2.old/libavcodec/av1dec.h ffmpeg-7.1.2/libavcodec/av1dec.h +--- ffmpeg-7.1.2.old/libavcodec/av1dec.h 2025-10-27 10:07:00.402472342 +0100 ++++ ffmpeg-7.1.2/libavcodec/av1dec.h 2025-10-27 10:07:02.454762738 +0100 +@@ -114,7 +114,8 @@ + AV1Frame ref[AV1_NUM_REF_FRAMES]; + AV1Frame cur_frame; + +- int nb_unit; ++ int nb_unit; ///< The index of the next OBU to be processed. ++ int start_unit; ///< The index of the first OBU of the current frame. + + // AVOptions + int operating_point; +diff -Naur ffmpeg-7.1.2.old/libavcodec/bsf/hevc_mp4toannexb.c ffmpeg-7.1.2/libavcodec/bsf/hevc_mp4toannexb.c +--- ffmpeg-7.1.2.old/libavcodec/bsf/hevc_mp4toannexb.c 2025-10-27 10:07:00.449472757 +0100 ++++ ffmpeg-7.1.2/libavcodec/bsf/hevc_mp4toannexb.c 2025-10-27 10:07:02.435022530 +0100 @@ -125,6 +125,7 @@ AVPacket *in; GetByteContext gb; @@ -420,9 +987,9 @@ diff -Naur ffmpeg-7.1.1.old/libavcodec/bsf/hevc_mp4toannexb.c ffmpeg-7.1.1/libav extra_size = add_extradata * ctx->par_out->extradata_size; got_irap |= is_irap; -diff -Naur ffmpeg-7.1.1.old/libavcodec/ccaption_dec.c ffmpeg-7.1.1/libavcodec/ccaption_dec.c ---- ffmpeg-7.1.1.old/libavcodec/ccaption_dec.c 2025-03-24 10:54:38.169756814 +0100 -+++ ffmpeg-7.1.1/libavcodec/ccaption_dec.c 2025-03-24 10:54:39.268544045 +0100 +diff -Naur ffmpeg-7.1.2.old/libavcodec/ccaption_dec.c ffmpeg-7.1.2/libavcodec/ccaption_dec.c +--- ffmpeg-7.1.2.old/libavcodec/ccaption_dec.c 2025-10-27 10:07:00.593474027 +0100 ++++ ffmpeg-7.1.2/libavcodec/ccaption_dec.c 2025-10-27 10:07:02.429490227 +0100 @@ -889,12 +889,13 @@ if (ctx->buffer[bidx].str[0] || ctx->real_time) { @@ -441,9 +1008,9 @@ diff -Naur ffmpeg-7.1.1.old/libavcodec/ccaption_dec.c ffmpeg-7.1.1/libavcodec/cc else sub->end_display_time = -1; ret = ff_ass_add_rect2(sub, ctx->buffer[bidx].str, ctx->readorder++, 0, NULL, NULL, &nb_rect_allocated); -diff -Naur ffmpeg-7.1.1.old/libavcodec/dvdsubdec.c ffmpeg-7.1.1/libavcodec/dvdsubdec.c ---- ffmpeg-7.1.1.old/libavcodec/dvdsubdec.c 2025-03-24 10:54:37.975754480 +0100 -+++ ffmpeg-7.1.1/libavcodec/dvdsubdec.c 2025-03-24 10:54:39.267391144 +0100 +diff -Naur ffmpeg-7.1.2.old/libavcodec/dvdsubdec.c ffmpeg-7.1.2/libavcodec/dvdsubdec.c +--- ffmpeg-7.1.2.old/libavcodec/dvdsubdec.c 2025-10-27 10:07:00.303471468 +0100 ++++ ffmpeg-7.1.2/libavcodec/dvdsubdec.c 2025-10-27 10:07:02.428490218 +0100 @@ -45,6 +45,8 @@ int buf_size; int forced_subs_only; @@ -559,9 +1126,217 @@ diff -Naur ffmpeg-7.1.1.old/libavcodec/dvdsubdec.c ffmpeg-7.1.1/libavcodec/dvdsu { NULL } }; static const AVClass dvdsub_class = { -diff -Naur ffmpeg-7.1.1.old/libavcodec/libdav1d.c ffmpeg-7.1.1/libavcodec/libdav1d.c ---- ffmpeg-7.1.1.old/libavcodec/libdav1d.c 2025-03-24 10:54:38.090755863 +0100 -+++ ffmpeg-7.1.1/libavcodec/libdav1d.c 2025-03-24 10:54:39.274085311 +0100 +diff -Naur ffmpeg-7.1.2.old/libavcodec/eac3dec.c ffmpeg-7.1.2/libavcodec/eac3dec.c +--- ffmpeg-7.1.2.old/libavcodec/eac3dec.c 2025-10-27 10:07:00.490473118 +0100 ++++ ffmpeg-7.1.2/libavcodec/eac3dec.c 2025-10-27 10:07:02.463392296 +0100 +@@ -53,8 +53,6 @@ + EAC3_GAQ_124 + } EAC3GaqMode; + +-#define EAC3_SR_CODE_REDUCED 3 +- + static void ff_eac3_apply_spectral_extension(AC3DecodeContext *s) + { + int bin, bnd, ch, i; +@@ -287,7 +285,7 @@ + } + } + +-static int ff_eac3_parse_header(AC3DecodeContext *s) ++static int ff_eac3_parse_header(AC3DecodeContext *s, const AC3HeaderInfo *hdr) + { + int i, blk, ch; + int ac3_exponent_strategy, parse_aht_info, parse_spx_atten_data; +@@ -323,11 +321,10 @@ + avpriv_request_sample(s->avctx, "Reduced sampling rate"); + return AVERROR_PATCHWELCOME; + } +- skip_bits(gbc, 5); // skip bitstream id + + /* volume control params */ + for (i = 0; i < (s->channel_mode ? 1 : 2); i++) { +- s->dialog_normalization[i] = -get_bits(gbc, 5); ++ s->dialog_normalization[i] = hdr->dialog_normalization[i]; + if (s->dialog_normalization[i] == 0) { + s->dialog_normalization[i] = -31; + } +@@ -335,147 +332,30 @@ + s->level_gain[i] = powf(2.0f, + (float)(s->target_level - s->dialog_normalization[i])/6.0f); + } +- s->compression_exists[i] = get_bits1(gbc); +- if (s->compression_exists[i]) { +- s->heavy_dynamic_range[i] = AC3_HEAVY_RANGE(get_bits(gbc, 8)); ++ if (hdr->compression_exists[i]) { ++ s->heavy_dynamic_range[i] = AC3_HEAVY_RANGE(hdr->heavy_dynamic_range[i]); + } + } + +- /* dependent stream channel map */ +- if (s->frame_type == EAC3_FRAME_TYPE_DEPENDENT) { +- if (get_bits1(gbc)) { +- int64_t channel_layout = 0; +- int channel_map = get_bits(gbc, 16); +- av_log(s->avctx, AV_LOG_DEBUG, "channel_map: %0X\n", channel_map); +- +- for (i = 0; i < 16; i++) +- if (channel_map & (1 << (EAC3_MAX_CHANNELS - i - 1))) +- channel_layout |= ff_eac3_custom_channel_map_locations[i][1]; +- +- if (av_popcount64(channel_layout) > EAC3_MAX_CHANNELS) { +- return AVERROR_INVALIDDATA; +- } +- s->channel_map = channel_map; +- } +- } ++ s->channel_map = hdr->channel_map; + + /* mixing metadata */ +- if (get_bits1(gbc)) { +- /* center and surround mix levels */ +- if (s->channel_mode > AC3_CHMODE_STEREO) { +- s->preferred_downmix = get_bits(gbc, 2); +- if (s->channel_mode & 1) { +- /* if three front channels exist */ +- s->center_mix_level_ltrt = get_bits(gbc, 3); +- s->center_mix_level = get_bits(gbc, 3); +- } +- if (s->channel_mode & 4) { +- /* if a surround channel exists */ +- s->surround_mix_level_ltrt = av_clip(get_bits(gbc, 3), 3, 7); +- s->surround_mix_level = av_clip(get_bits(gbc, 3), 3, 7); +- } +- } +- +- /* lfe mix level */ +- if (s->lfe_on && (s->lfe_mix_level_exists = get_bits1(gbc))) { +- s->lfe_mix_level = get_bits(gbc, 5); +- } +- +- /* info for mixing with other streams and substreams */ +- if (s->frame_type == EAC3_FRAME_TYPE_INDEPENDENT) { +- for (i = 0; i < (s->channel_mode ? 1 : 2); i++) { +- // TODO: apply program scale factor +- if (get_bits1(gbc)) { +- skip_bits(gbc, 6); // skip program scale factor +- } +- } +- if (get_bits1(gbc)) { +- skip_bits(gbc, 6); // skip external program scale factor +- } +- /* skip mixing parameter data */ +- switch(get_bits(gbc, 2)) { +- case 1: skip_bits(gbc, 5); break; +- case 2: skip_bits(gbc, 12); break; +- case 3: { +- int mix_data_size = (get_bits(gbc, 5) + 2) << 3; +- skip_bits_long(gbc, mix_data_size); +- break; +- } +- } +- /* skip pan information for mono or dual mono source */ +- if (s->channel_mode < AC3_CHMODE_STEREO) { +- for (i = 0; i < (s->channel_mode ? 1 : 2); i++) { +- if (get_bits1(gbc)) { +- /* note: this is not in the ATSC A/52B specification +- reference: ETSI TS 102 366 V1.1.1 +- section: E.1.3.1.25 */ +- skip_bits(gbc, 8); // skip pan mean direction index +- skip_bits(gbc, 6); // skip reserved paninfo bits +- } +- } +- } +- /* skip mixing configuration information */ +- if (get_bits1(gbc)) { +- for (blk = 0; blk < s->num_blocks; blk++) { +- if (s->num_blocks == 1 || get_bits1(gbc)) { +- skip_bits(gbc, 5); +- } +- } +- } +- } +- } ++ s->preferred_downmix = hdr->preferred_downmix; ++ s->center_mix_level_ltrt = hdr->center_mix_level_ltrt; ++ s->center_mix_level = hdr->center_mix_level; ++ s->surround_mix_level_ltrt = hdr->surround_mix_level_ltrt; ++ s->surround_mix_level = hdr->surround_mix_level; ++ s->lfe_mix_level_exists = hdr->lfe_mix_level_exists; ++ s->lfe_mix_level = hdr->lfe_mix_level; ++ s->dolby_surround_mode = hdr->dolby_surround_mode; ++ s->dolby_headphone_mode = hdr->dolby_headphone_mode; ++ s->dolby_surround_ex_mode = hdr->dolby_surround_ex_mode; + + /* informational metadata */ +- if (get_bits1(gbc)) { +- s->bitstream_mode = get_bits(gbc, 3); +- skip_bits(gbc, 2); // skip copyright bit and original bitstream bit +- if (s->channel_mode == AC3_CHMODE_STEREO) { +- s->dolby_surround_mode = get_bits(gbc, 2); +- s->dolby_headphone_mode = get_bits(gbc, 2); +- } +- if (s->channel_mode >= AC3_CHMODE_2F2R) { +- s->dolby_surround_ex_mode = get_bits(gbc, 2); +- } +- for (i = 0; i < (s->channel_mode ? 1 : 2); i++) { +- if (get_bits1(gbc)) { +- skip_bits(gbc, 8); // skip mix level, room type, and A/D converter type +- } +- } +- if (s->bit_alloc_params.sr_code != EAC3_SR_CODE_REDUCED) { +- skip_bits1(gbc); // skip source sample rate code +- } +- } +- +- /* converter synchronization flag +- If frames are less than six blocks, this bit should be turned on +- once every 6 blocks to indicate the start of a frame set. +- reference: RFC 4598, Section 2.1.3 Frame Sets */ +- if (s->frame_type == EAC3_FRAME_TYPE_INDEPENDENT && s->num_blocks != 6) { +- skip_bits1(gbc); // skip converter synchronization flag +- } +- +- /* original frame size code if this stream was converted from AC-3 */ +- if (s->frame_type == EAC3_FRAME_TYPE_AC3_CONVERT && +- (s->num_blocks == 6 || get_bits1(gbc))) { +- skip_bits(gbc, 6); // skip frame size code +- } ++ s->bitstream_mode = hdr->bitstream_mode; + + /* additional bitstream info */ +- if (get_bits1(gbc)) { +- int addbsil = get_bits(gbc, 6); +- for (i = 0; i < addbsil + 1; i++) { +- if (i == 0) { +- /* In this 8 bit chunk, the LSB is equal to flag_ec3_extension_type_a +- which can be used to detect Atmos presence */ +- skip_bits(gbc, 7); +- if (get_bits1(gbc)) { +- s->eac3_extension_type_a = 1; +- } +- } else { +- skip_bits(gbc, 8); // skip additional bit stream info +- } +- } +- } ++ s->eac3_extension_type_a = hdr->eac3_extension_type_a; + + /* audio frame syntax flags, strategy data, and per-frame data */ + +diff -Naur ffmpeg-7.1.2.old/libavcodec/hwaccels.h ffmpeg-7.1.2/libavcodec/hwaccels.h +--- ffmpeg-7.1.2.old/libavcodec/hwaccels.h 2025-10-27 10:07:00.251471009 +0100 ++++ ffmpeg-7.1.2/libavcodec/hwaccels.h 2025-10-27 10:07:02.454807062 +0100 +@@ -26,6 +26,7 @@ + extern const struct FFHWAccel ff_av1_nvdec_hwaccel; + extern const struct FFHWAccel ff_av1_vaapi_hwaccel; + extern const struct FFHWAccel ff_av1_vdpau_hwaccel; ++extern const struct FFHWAccel ff_av1_videotoolbox_hwaccel; + extern const struct FFHWAccel ff_av1_vulkan_hwaccel; + extern const struct FFHWAccel ff_h263_vaapi_hwaccel; + extern const struct FFHWAccel ff_h263_videotoolbox_hwaccel; +diff -Naur ffmpeg-7.1.2.old/libavcodec/libdav1d.c ffmpeg-7.1.2/libavcodec/libdav1d.c +--- ffmpeg-7.1.2.old/libavcodec/libdav1d.c 2025-10-27 10:07:00.474472977 +0100 ++++ ffmpeg-7.1.2/libavcodec/libdav1d.c 2025-10-27 10:07:02.436286040 +0100 @@ -563,6 +563,8 @@ break; } @@ -590,17 +1365,28 @@ diff -Naur ffmpeg-7.1.1.old/libavcodec/libdav1d.c ffmpeg-7.1.1/libavcodec/libdav res = ff_dovi_attach_side_data(&dav1d->dovi, frame); if (res < 0) goto fail; -diff -Naur ffmpeg-7.1.1.old/libavcodec/mfenc.c ffmpeg-7.1.1/libavcodec/mfenc.c ---- ffmpeg-7.1.1.old/libavcodec/mfenc.c 2025-03-24 10:54:38.125756284 +0100 -+++ ffmpeg-7.1.1/libavcodec/mfenc.c 2025-03-24 10:54:39.282547759 +0100 +diff -Naur ffmpeg-7.1.2.old/libavcodec/Makefile ffmpeg-7.1.2/libavcodec/Makefile +--- ffmpeg-7.1.2.old/libavcodec/Makefile 2025-10-27 10:07:01.865180885 +0100 ++++ ffmpeg-7.1.2/libavcodec/Makefile 2025-10-27 10:07:02.454516424 +0100 +@@ -1008,6 +1008,7 @@ + OBJS-$(CONFIG_AV1_NVDEC_HWACCEL) += nvdec_av1.o + OBJS-$(CONFIG_AV1_VAAPI_HWACCEL) += vaapi_av1.o + OBJS-$(CONFIG_AV1_VDPAU_HWACCEL) += vdpau_av1.o ++OBJS-$(CONFIG_AV1_VIDEOTOOLBOX_HWACCEL) += videotoolbox_av1.o + OBJS-$(CONFIG_AV1_VULKAN_HWACCEL) += vulkan_decode.o vulkan_av1.o + OBJS-$(CONFIG_H263_VAAPI_HWACCEL) += vaapi_mpeg4.o + OBJS-$(CONFIG_H263_VIDEOTOOLBOX_HWACCEL) += videotoolbox.o +diff -Naur ffmpeg-7.1.2.old/libavcodec/mfenc.c ffmpeg-7.1.2/libavcodec/mfenc.c +--- ffmpeg-7.1.2.old/libavcodec/mfenc.c 2025-10-27 10:07:00.524473418 +0100 ++++ ffmpeg-7.1.2/libavcodec/mfenc.c 2025-10-27 10:07:02.459027162 +0100 @@ -1315,3 +1315,4 @@ MF_ENCODER(VIDEO, h264, H264, venc_opts, VFMTS, VCAPS, defaults); MF_ENCODER(VIDEO, hevc, HEVC, venc_opts, VFMTS, VCAPS, defaults); +MF_ENCODER(VIDEO, av1, AV1, venc_opts, VFMTS, VCAPS, defaults); -diff -Naur ffmpeg-7.1.1.old/libavcodec/mf_utils.c ffmpeg-7.1.1/libavcodec/mf_utils.c ---- ffmpeg-7.1.1.old/libavcodec/mf_utils.c 2025-03-24 10:54:38.086755815 +0100 -+++ ffmpeg-7.1.1/libavcodec/mf_utils.c 2025-03-24 10:54:39.282392106 +0100 +diff -Naur ffmpeg-7.1.2.old/libavcodec/mf_utils.c ffmpeg-7.1.2/libavcodec/mf_utils.c +--- ffmpeg-7.1.2.old/libavcodec/mf_utils.c 2025-10-27 10:07:00.467472915 +0100 ++++ ffmpeg-7.1.2/libavcodec/mf_utils.c 2025-10-27 10:07:02.458887429 +0100 @@ -240,6 +240,7 @@ GUID_ENTRY(MFMediaType_Video), GUID_ENTRY(MFAudioFormat_PCM), @@ -617,9 +1403,9 @@ diff -Naur ffmpeg-7.1.1.old/libavcodec/mf_utils.c ffmpeg-7.1.1/libavcodec/mf_uti case AV_CODEC_ID_H264: return &MFVideoFormat_H264; case AV_CODEC_ID_HEVC: return &ff_MFVideoFormat_HEVC; case AV_CODEC_ID_AC3: return &MFAudioFormat_Dolby_AC3; -diff -Naur ffmpeg-7.1.1.old/libavcodec/mf_utils.h ffmpeg-7.1.1/libavcodec/mf_utils.h ---- ffmpeg-7.1.1.old/libavcodec/mf_utils.h 2025-03-24 10:54:38.061755515 +0100 -+++ ffmpeg-7.1.1/libavcodec/mf_utils.h 2025-03-24 10:54:39.282464482 +0100 +diff -Naur ffmpeg-7.1.2.old/libavcodec/mf_utils.h ffmpeg-7.1.2/libavcodec/mf_utils.h +--- ffmpeg-7.1.2.old/libavcodec/mf_utils.h 2025-10-27 10:07:00.429472580 +0100 ++++ ffmpeg-7.1.2/libavcodec/mf_utils.h 2025-10-27 10:07:02.458955668 +0100 @@ -113,6 +113,7 @@ DEFINE_MEDIATYPE_GUID(ff_MFVideoFormat_HEVC, 0x43564548); // FCC('HEVC') @@ -628,9 +1414,9 @@ diff -Naur ffmpeg-7.1.1.old/libavcodec/mf_utils.h ffmpeg-7.1.1/libavcodec/mf_uti // This enum is missing from mingw-w64's codecapi.h by v7.0.0. -diff -Naur ffmpeg-7.1.1.old/libavcodec/pgssubdec.c ffmpeg-7.1.1/libavcodec/pgssubdec.c ---- ffmpeg-7.1.1.old/libavcodec/pgssubdec.c 2025-03-24 10:54:37.986754612 +0100 -+++ ffmpeg-7.1.1/libavcodec/pgssubdec.c 2025-03-24 10:54:39.280528236 +0100 +diff -Naur ffmpeg-7.1.2.old/libavcodec/pgssubdec.c ffmpeg-7.1.2/libavcodec/pgssubdec.c +--- ffmpeg-7.1.2.old/libavcodec/pgssubdec.c 2025-10-27 10:07:00.318471601 +0100 ++++ ffmpeg-7.1.2/libavcodec/pgssubdec.c 2025-10-27 10:07:02.446191090 +0100 @@ -35,9 +35,11 @@ #include "libavutil/opt.h" @@ -1411,10 +2197,338 @@ diff -Naur ffmpeg-7.1.1.old/libavcodec/pgssubdec.c ffmpeg-7.1.1/libavcodec/pgssu break; case DISPLAY_SEGMENT: if (*got_sub_ptr) { -diff -Naur ffmpeg-7.1.1.old/libavcodec/videotoolbox.c ffmpeg-7.1.1/libavcodec/videotoolbox.c ---- ffmpeg-7.1.1.old/libavcodec/videotoolbox.c 2025-03-24 10:54:38.027755105 +0100 -+++ ffmpeg-7.1.1/libavcodec/videotoolbox.c 2025-03-24 10:54:39.271196851 +0100 -@@ -916,6 +916,23 @@ +diff -Naur ffmpeg-7.1.2.old/libavcodec/qsvenc_av1.c ffmpeg-7.1.2/libavcodec/qsvenc_av1.c +--- ffmpeg-7.1.2.old/libavcodec/qsvenc_av1.c 2025-10-27 10:07:00.531473480 +0100 ++++ ffmpeg-7.1.2/libavcodec/qsvenc_av1.c 2025-10-27 10:07:02.443863055 +0100 +@@ -189,6 +189,10 @@ + { "tile_cols", "Number of columns for tiled encoding", OFFSET(qsv.tile_cols), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, UINT16_MAX, VE }, + { "tile_rows", "Number of rows for tiled encoding", OFFSET(qsv.tile_rows), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, UINT16_MAX, VE }, + { "look_ahead_depth", "Depth of look ahead in number frames, available when extbrc option is enabled", OFFSET(qsv.look_ahead_depth), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 100, VE }, ++#if QSV_HAVE_EXT_AV1_SCC ++ { "palette_mode", "Enable palette mode of Screen Content Tool for encoding", OFFSET(qsv.palette_mode), AV_OPT_TYPE_BOOL, { .i64 = 0}, 0, 1, VE}, ++ { "intrabc", "Enable intra block copy of Screen Content Tool for encoding", OFFSET(qsv.intrabc), AV_OPT_TYPE_BOOL, { .i64 = 0}, 0, 1, VE}, ++#endif + { NULL }, + }; + +diff -Naur ffmpeg-7.1.2.old/libavcodec/qsvenc.c ffmpeg-7.1.2/libavcodec/qsvenc.c +--- ffmpeg-7.1.2.old/libavcodec/qsvenc.c 2025-10-27 10:07:00.592474018 +0100 ++++ ffmpeg-7.1.2/libavcodec/qsvenc.c 2025-10-27 10:07:02.443621469 +0100 +@@ -494,6 +494,9 @@ + mfxExtAV1BitstreamParam *av1_bs_param = (mfxExtAV1BitstreamParam *)coding_opts[1]; + mfxExtCodingOption2 *co2 = (mfxExtCodingOption2*)coding_opts[2]; + mfxExtCodingOption3 *co3 = (mfxExtCodingOption3*)coding_opts[3]; ++#if QSV_HAVE_EXT_AV1_SCC ++ mfxExtAV1ScreenContentTools *scc = (mfxExtAV1ScreenContentTools*)coding_opts[4]; ++#endif + + av_log(avctx, AV_LOG_VERBOSE, "profile: %s; level: %"PRIu16"\n", + print_profile(avctx->codec_id, info->CodecProfile), info->CodecLevel); +@@ -566,6 +569,13 @@ + print_threestate(av1_bs_param->WriteIVFHeaders)); + av_log(avctx, AV_LOG_VERBOSE, "LowDelayBRC: %s\n", print_threestate(co3->LowDelayBRC)); + av_log(avctx, AV_LOG_VERBOSE, "MaxFrameSize: %d;\n", co2->MaxFrameSize); ++#if QSV_HAVE_EXT_AV1_SCC ++ if (scc) { ++ av_log(avctx, AV_LOG_VERBOSE, ++ "Palette: %s; IntraBlockCopy: %s\n", ++ print_threestate(scc->Palette), print_threestate(scc->IntraBlockCopy)); ++ } ++#endif + } + #endif + +@@ -1282,6 +1292,28 @@ + } + #endif + ++#if QSV_HAVE_EXT_AV1_SCC ++ if (q->palette_mode || q->intrabc) { ++ if (QSV_RUNTIME_VERSION_ATLEAST(q->ver, 2, 13)) { ++ if (q->param.mfx.CodecId != MFX_CODEC_AV1) { ++ av_log(avctx, AV_LOG_ERROR, "Not supported encoder for Screen Content Tool Encode. " ++ "Supported: av1_qsv \n"); ++ return AVERROR_UNKNOWN; ++ } ++ ++ q->extsccparam.Header.BufferId = MFX_EXTBUFF_AV1_SCREEN_CONTENT_TOOLS; ++ q->extsccparam.Header.BufferSz = sizeof(q->extsccparam); ++ q->extsccparam.Palette = q->palette_mode ? MFX_CODINGOPTION_ON : MFX_CODINGOPTION_OFF; ++ q->extsccparam.IntraBlockCopy = q->intrabc ? MFX_CODINGOPTION_ON : MFX_CODINGOPTION_OFF; ++ q->extparam_internal[q->nb_extparam_internal++] = (mfxExtBuffer *)&q->extsccparam; ++ } else { ++ av_log(avctx, AV_LOG_ERROR, ++ "This version of runtime doesn't support Screen Content Tool Encode\n"); ++ return AVERROR_UNKNOWN; ++ } ++ } ++#endif ++ + if (!check_enc_param(avctx,q)) { + av_log(avctx, AV_LOG_ERROR, + "some encoding parameters are not supported by the QSV " +@@ -1389,11 +1421,21 @@ + .Header.BufferSz = sizeof(co3), + }; + ++#if QSV_HAVE_EXT_AV1_SCC ++ mfxExtAV1ScreenContentTools scc_buf = { ++ .Header.BufferId = MFX_EXTBUFF_AV1_SCREEN_CONTENT_TOOLS, ++ .Header.BufferSz = sizeof(scc_buf), ++ }; ++#endif ++ + mfxExtBuffer *ext_buffers[] = { + (mfxExtBuffer*)&av1_extend_tile_buf, + (mfxExtBuffer*)&av1_bs_param, + (mfxExtBuffer*)&co2, + (mfxExtBuffer*)&co3, ++#if QSV_HAVE_EXT_AV1_SCC ++ (mfxExtBuffer*)&scc_buf, ++#endif + }; + + if (!QSV_RUNTIME_VERSION_ATLEAST(q->ver, 2, 5)) { +@@ -1842,6 +1884,13 @@ + return ret; + } + ++ // Update AVCodecContext with actual encoding parameters ++ mfxInfoMFX *info = &q->param.mfx; ++ avctx->has_b_frames = 0; ++ if (info->GopRefDist > 1) { ++ avctx->has_b_frames = info->GopRefDist - 1; ++ } ++ + q->avctx = avctx; + + return 0; +diff -Naur ffmpeg-7.1.2.old/libavcodec/qsvenc.h ffmpeg-7.1.2/libavcodec/qsvenc.h +--- ffmpeg-7.1.2.old/libavcodec/qsvenc.h 2025-10-27 10:07:00.282471283 +0100 ++++ ffmpeg-7.1.2/libavcodec/qsvenc.h 2025-10-27 10:07:02.443799916 +0100 +@@ -38,6 +38,7 @@ + + #define QSV_HAVE_EXT_VP9_TILES QSV_VERSION_ATLEAST(1, 29) + #define QSV_HAVE_EXT_AV1_PARAM QSV_VERSION_ATLEAST(2, 5) ++#define QSV_HAVE_EXT_AV1_SCC QSV_VERSION_ATLEAST(2, 13) + + #if defined(_WIN32) || defined(__CYGWIN__) + #define QSV_HAVE_AVBR 1 +@@ -188,10 +189,13 @@ + mfxFrameSurface1 **opaque_surfaces; + AVBufferRef *opaque_alloc_buf; + #endif ++#if QSV_HAVE_EXT_AV1_SCC ++ mfxExtAV1ScreenContentTools extsccparam; ++#endif + + mfxExtVideoSignalInfo extvsi; + +- mfxExtBuffer *extparam_internal[5 + (QSV_HAVE_MF * 2) + (QSV_HAVE_EXT_AV1_PARAM * 2) + QSV_HAVE_HE]; ++ mfxExtBuffer *extparam_internal[5 + (QSV_HAVE_MF * 2) + (QSV_HAVE_EXT_AV1_PARAM * 2) + QSV_HAVE_HE + QSV_HAVE_EXT_AV1_SCC]; + int nb_extparam_internal; + + mfxExtBuffer **extparam_str; +@@ -319,6 +323,8 @@ + int dual_gfx; + + AVDictionary *qsv_params; ++ int palette_mode; ++ int intrabc; + } QSVEncContext; + + int ff_qsv_enc_init(AVCodecContext *avctx, QSVEncContext *q); +diff -Naur ffmpeg-7.1.2.old/libavcodec/videotoolbox_av1.c ffmpeg-7.1.2/libavcodec/videotoolbox_av1.c +--- ffmpeg-7.1.2.old/libavcodec/videotoolbox_av1.c 1970-01-01 01:00:00.000000000 +0100 ++++ ffmpeg-7.1.2/libavcodec/videotoolbox_av1.c 2025-10-27 10:07:02.455024552 +0100 +@@ -0,0 +1,105 @@ ++/* ++ * Videotoolbox hardware acceleration for AV1 ++ * Copyright (c) 2023 Jan Ekström ++ * Copyright (c) 2024 Ruslan Chernenko ++ * Copyright (c) 2024 Martin Storsjö ++ * ++ * This file is part of FFmpeg. ++ * ++ * FFmpeg is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * FFmpeg is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with FFmpeg; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ */ ++ ++#include "libavutil/mem.h" ++ ++#include "av1dec.h" ++#include "hwaccel_internal.h" ++#include "internal.h" ++#include "vt_internal.h" ++ ++CFDataRef ff_videotoolbox_av1c_extradata_create(AVCodecContext *avctx) ++{ ++ AV1DecContext *s = avctx->priv_data; ++ uint8_t *buf; ++ CFDataRef data; ++ if (!s->raw_seq) ++ return NULL; ++ ++ buf = av_malloc(s->seq_data_ref->size + 4); ++ if (!buf) ++ return NULL; ++ buf[0] = 0x81; // version and marker (constant) ++ buf[1] = s->raw_seq->seq_profile << 5 | s->raw_seq->seq_level_idx[0]; ++ buf[2] = s->raw_seq->seq_tier[0] << 7 | ++ s->raw_seq->color_config.high_bitdepth << 6 | ++ s->raw_seq->color_config.twelve_bit << 5 | ++ s->raw_seq->color_config.mono_chrome << 4 | ++ s->raw_seq->color_config.subsampling_x << 3 | ++ s->raw_seq->color_config.subsampling_y << 2 | ++ s->raw_seq->color_config.chroma_sample_position; ++ ++ if (s->raw_seq->initial_display_delay_present_flag) ++ buf[3] = 0 << 5 | ++ s->raw_seq->initial_display_delay_present_flag << 4 | ++ s->raw_seq->initial_display_delay_minus_1[0]; ++ else ++ buf[3] = 0x00; ++ memcpy(buf + 4, s->seq_data_ref->data, s->seq_data_ref->size); ++ data = CFDataCreate(kCFAllocatorDefault, buf, s->seq_data_ref->size + 4); ++ av_free(buf); ++ return data; ++}; ++ ++ ++static int videotoolbox_av1_start_frame(AVCodecContext *avctx, ++ const uint8_t *buffer, ++ uint32_t size) ++{ ++ return 0; ++} ++ ++static int videotoolbox_av1_decode_slice(AVCodecContext *avctx, ++ const uint8_t *buffer, ++ uint32_t size) ++{ ++ return 0; ++} ++ ++static int videotoolbox_av1_end_frame(AVCodecContext *avctx) ++{ ++ const AV1DecContext *s = avctx->priv_data; ++ VTContext *vtctx = avctx->internal->hwaccel_priv_data; ++ AVFrame *frame = s->cur_frame.f; ++ ++ vtctx->bitstream_size = 0; ++ for (int i = s->start_unit; i < s->nb_unit; i++) ++ ff_videotoolbox_buffer_append(vtctx, s->current_obu.units[i].data, ++ s->current_obu.units[i].data_size); ++ return ff_videotoolbox_common_end_frame(avctx, frame); ++} ++ ++const FFHWAccel ff_av1_videotoolbox_hwaccel = { ++ .p.name = "av1_videotoolbox", ++ .p.type = AVMEDIA_TYPE_VIDEO, ++ .p.id = AV_CODEC_ID_AV1, ++ .p.pix_fmt = AV_PIX_FMT_VIDEOTOOLBOX, ++ .alloc_frame = ff_videotoolbox_alloc_frame, ++ .start_frame = videotoolbox_av1_start_frame, ++ .decode_slice = videotoolbox_av1_decode_slice, ++ .end_frame = videotoolbox_av1_end_frame, ++ .frame_params = ff_videotoolbox_frame_params, ++ .init = ff_videotoolbox_common_init, ++ .uninit = ff_videotoolbox_uninit, ++ .priv_data_size = sizeof(VTContext), ++}; +diff -Naur ffmpeg-7.1.2.old/libavcodec/videotoolbox.c ffmpeg-7.1.2/libavcodec/videotoolbox.c +--- ffmpeg-7.1.2.old/libavcodec/videotoolbox.c 2025-10-27 10:07:00.379472139 +0100 ++++ ffmpeg-7.1.2/libavcodec/videotoolbox.c 2025-10-27 10:07:02.456490466 +0100 +@@ -56,6 +56,10 @@ + enum { kCMVideoCodecType_VP9 = 'vp09' }; + #endif + ++#if !HAVE_KCMVIDEOCODECTYPE_AV1 ++enum { kCMVideoCodecType_AV1 = 'av01' }; ++#endif ++ + #define VIDEOTOOLBOX_ESDS_EXTRADATA_PADDING 12 + + typedef struct VTHWFrame { +@@ -92,6 +96,26 @@ + return 0; + } + ++int ff_videotoolbox_buffer_append(VTContext *vtctx, ++ const uint8_t *buffer, ++ uint32_t size) ++{ ++ void *tmp; ++ ++ tmp = av_fast_realloc(vtctx->bitstream, ++ &vtctx->allocated_size, ++ vtctx->bitstream_size + size); ++ ++ if (!tmp) ++ return AVERROR(ENOMEM); ++ ++ vtctx->bitstream = tmp; ++ memcpy(vtctx->bitstream + vtctx->bitstream_size, buffer, size); ++ vtctx->bitstream_size += size; ++ ++ return 0; ++} ++ + static int videotoolbox_postproc_frame(void *avctx, AVFrame *frame) + { + int ret; +@@ -108,9 +132,6 @@ + frame->crop_top = 0; + frame->crop_bottom = 0; + +- if ((ret = av_vt_pixbuf_set_attachments(avctx, ref->pixbuf, frame)) < 0) +- return ret; +- + frame->data[3] = (uint8_t*)ref->pixbuf; + + if (ref->hw_frames_ctx) { +@@ -790,7 +811,7 @@ + #if TARGET_OS_IPHONE + CFDictionarySetValue(buffer_attributes, kCVPixelBufferOpenGLESCompatibilityKey, kCFBooleanTrue); + #else +- CFDictionarySetValue(buffer_attributes, kCVPixelBufferIOSurfaceOpenGLTextureCompatibilityKey, kCFBooleanTrue); ++ CFDictionarySetValue(buffer_attributes, kCVPixelBufferMetalCompatibilityKey, kCFBooleanTrue); + #endif + + CFRelease(io_surface_properties); +@@ -847,6 +868,13 @@ + CFDictionarySetValue(avc_info, CFSTR("vpcC"), data); + break; + #endif ++#if CONFIG_AV1_VIDEOTOOLBOX_HWACCEL ++ case kCMVideoCodecType_AV1 : ++ data = ff_videotoolbox_av1c_extradata_create(avctx); ++ if (data) ++ CFDictionarySetValue(avc_info, CFSTR("av1C"), data); ++ break; ++#endif + default: + break; + } +@@ -912,10 +940,30 @@ + case AV_CODEC_ID_VP9 : + videotoolbox->cm_codec_type = kCMVideoCodecType_VP9; + break; ++ case AV_CODEC_ID_AV1 : ++ videotoolbox->cm_codec_type = kCMVideoCodecType_AV1; ++ break; + default : break; } @@ -1438,9 +2552,46 @@ diff -Naur ffmpeg-7.1.1.old/libavcodec/videotoolbox.c ffmpeg-7.1.1/libavcodec/vi #if defined(MAC_OS_X_VERSION_10_9) && !TARGET_OS_IPHONE && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_9) && AV_HAS_BUILTIN(__builtin_available) if (avctx->codec_id == AV_CODEC_ID_PRORES) { if (__builtin_available(macOS 10.9, *)) { -diff -Naur ffmpeg-7.1.1.old/libavformat/isom.h ffmpeg-7.1.1/libavformat/isom.h ---- ffmpeg-7.1.1.old/libavformat/isom.h 2025-03-24 10:54:38.366759184 +0100 -+++ ffmpeg-7.1.1/libavformat/isom.h 2025-03-24 10:54:39.261252302 +0100 +diff -Naur ffmpeg-7.1.2.old/libavcodec/vt_internal.h ffmpeg-7.1.2/libavcodec/vt_internal.h +--- ffmpeg-7.1.2.old/libavcodec/vt_internal.h 2025-10-27 10:07:00.531473480 +0100 ++++ ffmpeg-7.1.2/libavcodec/vt_internal.h 2025-10-27 10:07:02.455086969 +0100 +@@ -56,6 +56,9 @@ + int ff_videotoolbox_buffer_copy(VTContext *vtctx, + const uint8_t *buffer, + uint32_t size); ++int ff_videotoolbox_buffer_append(VTContext *vtctx, ++ const uint8_t *buffer, ++ uint32_t size); + int ff_videotoolbox_uninit(AVCodecContext *avctx); + int ff_videotoolbox_h264_start_frame(AVCodecContext *avctx, + const uint8_t *buffer, +@@ -64,6 +67,7 @@ + const uint8_t *buffer, + uint32_t size); + int ff_videotoolbox_common_end_frame(AVCodecContext *avctx, AVFrame *frame); ++CFDataRef ff_videotoolbox_av1c_extradata_create(AVCodecContext *avctx); + CFDataRef ff_videotoolbox_avcc_extradata_create(AVCodecContext *avctx); + CFDataRef ff_videotoolbox_hvcc_extradata_create(AVCodecContext *avctx); + CFDataRef ff_videotoolbox_vpcc_extradata_create(AVCodecContext *avctx); +diff -Naur ffmpeg-7.1.2.old/libavfilter/vf_vpp_qsv.c ffmpeg-7.1.2/libavfilter/vf_vpp_qsv.c +--- ffmpeg-7.1.2.old/libavfilter/vf_vpp_qsv.c 2025-10-27 10:07:00.764475536 +0100 ++++ ffmpeg-7.1.2/libavfilter/vf_vpp_qsv.c 2025-10-27 10:07:02.461658339 +0100 +@@ -494,9 +494,9 @@ + outvsi_conf.Header.BufferId = MFX_EXTBUFF_VIDEO_SIGNAL_INFO_OUT; + outvsi_conf.Header.BufferSz = sizeof(mfxExtVideoSignalInfo); + outvsi_conf.VideoFullRange = (out->color_range == AVCOL_RANGE_JPEG); +- outvsi_conf.ColourPrimaries = (out->color_primaries == AVCOL_PRI_UNSPECIFIED) ? AVCOL_PRI_BT709 : out->color_primaries; +- outvsi_conf.TransferCharacteristics = (out->color_trc == AVCOL_TRC_UNSPECIFIED) ? AVCOL_TRC_BT709 : out->color_trc; +- outvsi_conf.MatrixCoefficients = (out->colorspace == AVCOL_SPC_UNSPECIFIED) ? AVCOL_SPC_BT709 : out->colorspace; ++ outvsi_conf.ColourPrimaries = (out->color_primaries == AVCOL_PRI_UNSPECIFIED) ? invsi_conf.ColourPrimaries : out->color_primaries; ++ outvsi_conf.TransferCharacteristics = (out->color_trc == AVCOL_TRC_UNSPECIFIED) ? invsi_conf.TransferCharacteristics : out->color_trc; ++ outvsi_conf.MatrixCoefficients = (out->colorspace == AVCOL_SPC_UNSPECIFIED) ? invsi_conf.MatrixCoefficients : out->colorspace; + outvsi_conf.ColourDescriptionPresent = 1; + + if (memcmp(&vpp->invsi_conf, &invsi_conf, sizeof(mfxExtVideoSignalInfo)) || +diff -Naur ffmpeg-7.1.2.old/libavformat/isom.h ffmpeg-7.1.2/libavformat/isom.h +--- ffmpeg-7.1.2.old/libavformat/isom.h 2025-10-27 10:07:00.909476815 +0100 ++++ ffmpeg-7.1.2/libavformat/isom.h 2025-10-27 10:07:02.422783282 +0100 @@ -272,6 +272,9 @@ MOVEncryptionIndex *encryption_index; } cenc; @@ -1451,9 +2602,9 @@ diff -Naur ffmpeg-7.1.1.old/libavformat/isom.h ffmpeg-7.1.1/libavformat/isom.h struct IAMFDemuxContext *iamf; } MOVStreamContext; -diff -Naur ffmpeg-7.1.1.old/libavformat/matroskaenc.c ffmpeg-7.1.1/libavformat/matroskaenc.c ---- ffmpeg-7.1.1.old/libavformat/matroskaenc.c 2025-03-24 10:54:38.396759545 +0100 -+++ ffmpeg-7.1.1/libavformat/matroskaenc.c 2025-03-24 10:54:39.269651231 +0100 +diff -Naur ffmpeg-7.1.2.old/libavformat/matroskaenc.c ffmpeg-7.1.2/libavformat/matroskaenc.c +--- ffmpeg-7.1.2.old/libavformat/matroskaenc.c 2025-10-27 10:07:00.955477221 +0100 ++++ ffmpeg-7.1.2/libavformat/matroskaenc.c 2025-10-27 10:07:02.430490236 +0100 @@ -2933,6 +2933,16 @@ case AV_CODEC_ID_AAC: if (side_data_size && mkv->track.bc) { @@ -1471,9 +2622,9 @@ diff -Naur ffmpeg-7.1.1.old/libavformat/matroskaenc.c ffmpeg-7.1.1/libavformat/m ret = get_aac_sample_rates(s, mkv, side_data, side_data_size, &track->sample_rate, &output_sample_rate); if (ret < 0) -diff -Naur ffmpeg-7.1.1.old/libavformat/mov.c ffmpeg-7.1.1/libavformat/mov.c ---- ffmpeg-7.1.1.old/libavformat/mov.c 2025-03-24 10:54:38.353759028 +0100 -+++ ffmpeg-7.1.1/libavformat/mov.c 2025-03-24 10:54:39.261629363 +0100 +diff -Naur ffmpeg-7.1.2.old/libavformat/mov.c ffmpeg-7.1.2/libavformat/mov.c +--- ffmpeg-7.1.2.old/libavformat/mov.c 2025-10-27 10:07:00.889476639 +0100 ++++ ffmpeg-7.1.2/libavformat/mov.c 2025-10-27 10:07:02.447584145 +0100 @@ -56,6 +56,7 @@ #include "libavcodec/mpegaudiodecheader.h" #include "libavcodec/mlp_parse.h" @@ -1482,7 +2633,41 @@ diff -Naur ffmpeg-7.1.1.old/libavformat/mov.c ffmpeg-7.1.1/libavformat/mov.c #include "internal.h" #include "avio_internal.h" #include "demux.h" -@@ -342,6 +343,73 @@ +@@ -131,6 +132,33 @@ + return 0; + } + ++static int mov_metadata_int16_no_padding(MOVContext *c, AVIOContext *pb, ++ unsigned len, const char *key) ++{ ++ c->fc->event_flags |= AVFMT_EVENT_FLAG_METADATA_UPDATED; ++ av_dict_set_int(&c->fc->metadata, key, avio_rb16(pb), 0); ++ ++ return 0; ++} ++ ++static int mov_metadata_int32_no_padding(MOVContext *c, AVIOContext *pb, ++ unsigned len, const char *key) ++{ ++ c->fc->event_flags |= AVFMT_EVENT_FLAG_METADATA_UPDATED; ++ av_dict_set_int(&c->fc->metadata, key, avio_rb32(pb), 0); ++ ++ return 0; ++} ++ ++static int mov_metadata_int64_no_padding(MOVContext *c, AVIOContext *pb, ++ unsigned len, const char *key) ++{ ++ c->fc->event_flags |= AVFMT_EVENT_FLAG_METADATA_UPDATED; ++ av_dict_set_int(&c->fc->metadata, key, avio_rb64(pb), 0); ++ ++ return 0; ++} ++ + static int mov_metadata_gnre(MOVContext *c, AVIOContext *pb, + unsigned len, const char *key) + { +@@ -342,6 +370,73 @@ return 0; } @@ -1556,7 +2741,7 @@ diff -Naur ffmpeg-7.1.1.old/libavformat/mov.c ffmpeg-7.1.1/libavformat/mov.c static int mov_read_udta_string(MOVContext *c, AVIOContext *pb, MOVAtom atom) { char tmp_key[AV_FOURCC_MAX_STRING_SIZE] = {0}; -@@ -354,6 +422,7 @@ +@@ -354,6 +449,7 @@ int (*parse)(MOVContext*, AVIOContext*, unsigned, const char*) = NULL; int raw = 0; int num = 0; @@ -1564,8 +2749,17 @@ diff -Naur ffmpeg-7.1.1.old/libavformat/mov.c ffmpeg-7.1.1/libavformat/mov.c switch (atom.type) { case MKTAG( '@','P','R','M'): key = "premiere_version"; raw = 1; break; -@@ -367,15 +436,33 @@ +@@ -364,35 +460,71 @@ + case MKTAG( 'a','k','I','D'): key = "account_type"; + parse = mov_metadata_int8_no_padding; break; + case MKTAG( 'a','p','I','D'): key = "account_id"; break; ++ case MKTAG( 'a','t','I','D'): key = "artist_id"; ++ parse = mov_metadata_int32_no_padding; break; case MKTAG( 'c','a','t','g'): key = "category"; break; ++ case MKTAG( 'c','m','I','D'): key = "composer_id"; ++ parse = mov_metadata_int32_no_padding; break; ++ case MKTAG( 'c','n','I','D'): key = "content_id"; ++ parse = mov_metadata_int32_no_padding; break; case MKTAG( 'c','p','i','l'): key = "compilation"; parse = mov_metadata_int8_no_padding; break; - case MKTAG( 'c','p','r','t'): key = "copyright"; break; @@ -1587,6 +2781,8 @@ diff -Naur ffmpeg-7.1.1.old/libavformat/mov.c ffmpeg-7.1.1/libavformat/mov.c case MKTAG( 'F','I','R','M'): key = "firmware"; raw = 1; break; - case MKTAG( 'g','n','r','e'): key = "genre"; - parse = mov_metadata_gnre; break; ++ case MKTAG( 'g','e','I','D'): key = "genre_id"; ++ parse = mov_metadata_int32_no_padding; break; + case MKTAG( 'g','n','r','e'): + key = "genre"; + parse = mov_metadata_gnre; @@ -1601,7 +2797,12 @@ diff -Naur ffmpeg-7.1.1.old/libavformat/mov.c ffmpeg-7.1.1/libavformat/mov.c case MKTAG( 'h','d','v','d'): key = "hd_video"; parse = mov_metadata_int8_no_padding; break; case MKTAG( 'H','M','M','T'): -@@ -386,6 +473,7 @@ + return mov_metadata_hmmt(c, pb, atom.size); ++ case MKTAG( 'i','t','n','u'): key = "itunes_u"; ++ parse = mov_metadata_int8_no_padding; break; + case MKTAG( 'k','e','y','w'): key = "keywords"; break; + case MKTAG( 'l','d','e','s'): key = "synopsis"; break; + case MKTAG( 'l','o','c','i'): return mov_metadata_loci(c, pb, atom.size); case MKTAG( 'm','a','n','u'): key = "make"; break; case MKTAG( 'm','o','d','l'): key = "model"; break; @@ -1609,9 +2810,87 @@ diff -Naur ffmpeg-7.1.1.old/libavformat/mov.c ffmpeg-7.1.1/libavformat/mov.c case MKTAG( 'p','c','s','t'): key = "podcast"; parse = mov_metadata_int8_no_padding; break; case MKTAG( 'p','g','a','p'): key = "gapless_playback"; -@@ -445,6 +533,15 @@ + parse = mov_metadata_int8_no_padding; break; ++ case MKTAG( 'p','l','I','D'): key = "playlist_id"; ++ parse = mov_metadata_int64_no_padding; break; + case MKTAG( 'p','u','r','d'): key = "purchase_date"; break; + case MKTAG( 'r','t','n','g'): key = "rating"; + parse = mov_metadata_int8_no_padding; break; ++ case MKTAG( 's','f','I','D'): key = "itunes_country"; ++ parse = mov_metadata_int32_no_padding; break; ++ case MKTAG( 's','d','e','s'): key = "series_description"; break; ++ case MKTAG( 's','h','w','m'): key = "show_work_and_movement"; ++ parse = mov_metadata_int8_no_padding; break; + case MKTAG( 's','o','a','a'): key = "sort_album_artist"; break; + case MKTAG( 's','o','a','l'): key = "sort_album"; break; + case MKTAG( 's','o','a','r'): key = "sort_artist"; break; +@@ -401,6 +533,8 @@ + case MKTAG( 's','o','s','n'): key = "sort_show"; break; + case MKTAG( 's','t','i','k'): key = "media_type"; + parse = mov_metadata_int8_no_padding; break; ++ case MKTAG( 't','m','p','o'): key = "tmpo"; ++ parse = mov_metadata_int16_no_padding; break; + case MKTAG( 't','r','k','n'): key = "track"; + parse = mov_metadata_track_or_disc_number; break; + case MKTAG( 't','v','e','n'): key = "episode_id"; break; +@@ -410,17 +544,23 @@ + case MKTAG( 't','v','s','h'): key = "show"; break; + case MKTAG( 't','v','s','n'): key = "season_number"; + parse = mov_metadata_int8_bypass_padding; break; ++ case MKTAG( 'x','i','d',' '): key = "xid"; break; + case MKTAG(0xa9,'A','R','T'): key = "artist"; break; + case MKTAG(0xa9,'P','R','D'): key = "producer"; break; + case MKTAG(0xa9,'a','l','b'): key = "album"; break; +- case MKTAG(0xa9,'a','u','t'): key = "artist"; break; ++ case MKTAG(0xa9,'a','r','d'): key = "art_director"; break; ++ case MKTAG(0xa9,'a','r','g'): key = "arranger"; break; ++ case MKTAG(0xa9,'a','u','t'): key = "author"; break; ++ case MKTAG(0xa9,'c','a','k'): key = "acknowledgement"; break; + case MKTAG(0xa9,'c','h','p'): key = "chapter"; break; + case MKTAG(0xa9,'c','m','t'): key = "comment"; break; + case MKTAG(0xa9,'c','o','m'): key = "composer"; break; ++ case MKTAG(0xa9,'c','o','n'): key = "conductor"; break; + case MKTAG(0xa9,'c','p','y'): key = "copyright"; break; + case MKTAG(0xa9,'d','a','y'): key = "date"; break; + case MKTAG(0xa9,'d','i','r'): key = "director"; break; + case MKTAG(0xa9,'d','i','s'): key = "disclaimer"; break; ++ case MKTAG(0xa9,'d','e','s'): key = "song_description"; break; + case MKTAG(0xa9,'e','d','1'): key = "edit_date"; break; + case MKTAG(0xa9,'e','n','c'): key = "encoder"; break; + case MKTAG(0xa9,'f','m','t'): key = "original_format"; break; +@@ -428,23 +568,45 @@ + case MKTAG(0xa9,'g','r','p'): key = "grouping"; break; + case MKTAG(0xa9,'h','s','t'): key = "host_computer"; break; + case MKTAG(0xa9,'i','n','f'): key = "comment"; break; ++ case MKTAG(0xa9,'l','n','t'): key = "linear_notes"; break; + case MKTAG(0xa9,'l','y','r'): key = "lyrics"; break; + case MKTAG(0xa9,'m','a','k'): key = "make"; break; + case MKTAG(0xa9,'m','o','d'): key = "model"; break; ++ case MKTAG(0xa9,'m','v','n'): key = "movement_name"; break; ++ case MKTAG(0xa9,'m','v','i'): key = "movement_number"; ++ parse = mov_metadata_int16_no_padding; break; ++ case MKTAG(0xa9,'m','v','c'): key = "movement_count"; ++ parse = mov_metadata_int16_no_padding; break; + case MKTAG(0xa9,'n','a','m'): key = "title"; break; + case MKTAG(0xa9,'o','p','e'): key = "original_artist"; break; ++ case MKTAG(0xa9,'p','h','g'): key = "phonogram_rights"; break; + case MKTAG(0xa9,'p','r','d'): key = "producer"; break; + case MKTAG(0xa9,'p','r','f'): key = "performers"; break; ++ case MKTAG(0xa9,'p','u','b'): key = "publisher"; break; + case MKTAG(0xa9,'r','e','q'): key = "playback_requirements"; break; ++ case MKTAG(0xa9,'s','n','e'): key = "sound_engineer"; break; ++ case MKTAG(0xa9,'s','o','l'): key = "soloist"; break; + case MKTAG(0xa9,'s','r','c'): key = "original_source"; break; + case MKTAG(0xa9,'s','t','3'): key = "subtitle"; break; + case MKTAG(0xa9,'s','w','r'): key = "encoder"; break; ++ case MKTAG(0xa9,'t','h','x'): key = "thanks"; break; + case MKTAG(0xa9,'t','o','o'): key = "encoder"; break; + case MKTAG(0xa9,'t','r','k'): key = "track"; break; + case MKTAG(0xa9,'u','r','l'): key = "URL"; break; ++ case MKTAG(0xa9,'w','r','k'): key = "work_name"; break; case MKTAG(0xa9,'w','r','n'): key = "warning"; break; case MKTAG(0xa9,'w','r','t'): key = "composer"; break; ++ case MKTAG(0xa9,'x','p','d'): key = "executive_producer"; break; case MKTAG(0xa9,'x','y','z'): key = "location"; break; + case MKTAG( 'a','l','b','m'): + case MKTAG( 'a','u','t','h'): @@ -1625,7 +2904,7 @@ diff -Naur ffmpeg-7.1.1.old/libavformat/mov.c ffmpeg-7.1.1/libavformat/mov.c } retry: if (c->itunes_metadata && atom.size > 8) { -@@ -571,17 +668,23 @@ +@@ -571,17 +733,23 @@ } str[str_size] = 0; } @@ -1658,7 +2937,7 @@ diff -Naur ffmpeg-7.1.1.old/libavformat/mov.c ffmpeg-7.1.1/libavformat/mov.c } } -@@ -9081,6 +9184,23 @@ +@@ -9088,6 +9256,23 @@ return ret; } @@ -1682,7 +2961,7 @@ diff -Naur ffmpeg-7.1.1.old/libavformat/mov.c ffmpeg-7.1.1/libavformat/mov.c static const MOVParseTableEntry mov_default_parse_table[] = { { MKTAG('A','C','L','R'), mov_read_aclr }, { MKTAG('A','P','R','G'), mov_read_avid }, -@@ -9183,6 +9303,7 @@ +@@ -9190,6 +9375,7 @@ { MKTAG('v','p','c','C'), mov_read_vpcc }, { MKTAG('m','d','c','v'), mov_read_mdcv }, { MKTAG('c','l','l','i'), mov_read_clli }, @@ -1690,7 +2969,7 @@ diff -Naur ffmpeg-7.1.1.old/libavformat/mov.c ffmpeg-7.1.1/libavformat/mov.c { MKTAG('d','v','c','C'), mov_read_dvcc_dvvc }, { MKTAG('d','v','v','C'), mov_read_dvcc_dvvc }, { MKTAG('d','v','w','C'), mov_read_dvcc_dvvc }, -@@ -10367,6 +10488,23 @@ +@@ -10374,6 +10560,23 @@ err = ff_replaygain_export(st, s->metadata); if (err < 0) return err; @@ -1714,9 +2993,9 @@ diff -Naur ffmpeg-7.1.1.old/libavformat/mov.c ffmpeg-7.1.1/libavformat/mov.c break; case AVMEDIA_TYPE_VIDEO: if (sc->display_matrix) { -diff -Naur ffmpeg-7.1.1.old/libavformat/movenc.c ffmpeg-7.1.1/libavformat/movenc.c ---- ffmpeg-7.1.1.old/libavformat/movenc.c 2025-03-24 10:54:38.381759365 +0100 -+++ ffmpeg-7.1.1/libavformat/movenc.c 2025-03-24 10:54:39.258769917 +0100 +diff -Naur ffmpeg-7.1.2.old/libavformat/movenc.c ffmpeg-7.1.2/libavformat/movenc.c +--- ffmpeg-7.1.2.old/libavformat/movenc.c 2025-10-27 10:07:00.933477027 +0100 ++++ ffmpeg-7.1.2/libavformat/movenc.c 2025-10-27 10:07:02.463726465 +0100 @@ -28,6 +28,7 @@ #include "movenc.h" @@ -1725,7 +3004,78 @@ diff -Naur ffmpeg-7.1.1.old/libavformat/movenc.c ffmpeg-7.1.1/libavformat/movenc #include "avio_internal.h" #include "dovi_isom.h" #include "riff.h" -@@ -4055,6 +4056,41 @@ +@@ -393,6 +394,8 @@ + uint16_t chan_loc; + /* if there is no dependent substream, then one bit reserved instead */ + } substream[1]; /* TODO: support 8 independent substreams */ ++ /* indicates the decoding complexity, 8 bits */ ++ uint8_t complexity_index_type_a; + }; + + static int mov_write_ac3_tag(AVFormatContext *s, AVIOContext *pb, MOVTrack *track) +@@ -474,6 +477,8 @@ + info->data_rate = FFMAX(info->data_rate, hdr->bit_rate / 1000); + info->ac3_bit_rate_code = FFMAX(info->ac3_bit_rate_code, + hdr->ac3_bit_rate_code); ++ info->complexity_index_type_a = hdr->complexity_index_type_a; ++ + num_blocks = hdr->num_blocks; + + if (!info->ec3_done) { +@@ -532,8 +537,6 @@ + int parent = hdr->substreamid; + + while (cumul_size != pkt->size) { +- GetBitContext gbc; +- int i; + ret = avpriv_ac3_parse_header(&hdr, pkt->data + cumul_size, pkt->size - cumul_size); + if (ret < 0) + goto end; +@@ -544,20 +547,9 @@ + info->substream[parent].num_dep_sub++; + ret /= 8; + +- /* header is parsed up to lfeon, but custom channel map may be needed */ +- init_get_bits8(&gbc, pkt->data + cumul_size + ret, pkt->size - cumul_size - ret); +- /* skip bsid */ +- skip_bits(&gbc, 5); +- /* skip volume control params */ +- for (i = 0; i < (hdr->channel_mode ? 1 : 2); i++) { +- skip_bits(&gbc, 5); // skip dialog normalization +- if (get_bits1(&gbc)) { +- skip_bits(&gbc, 8); // skip compression gain word +- } +- } + /* get the dependent stream channel map, if exists */ +- if (get_bits1(&gbc)) +- info->substream[parent].chan_loc |= (get_bits(&gbc, 16) >> 5) & 0x1f; ++ if (hdr->channel_map_present) ++ info->substream[parent].chan_loc |= (hdr->channel_map >> 5) & 0x1f; + else + info->substream[parent].chan_loc |= hdr->channel_mode; + cumul_size += hdr->frame_size; +@@ -614,7 +606,7 @@ + } + + info = track->eac3_priv; +- size = 2 + ((32 * (info->num_ind_sub + 1) + 7) >> 3); ++ size = 2 + (4 * (info->num_ind_sub + 1)) + (2 * !!info->complexity_index_type_a); + buf = av_malloc(size); + if (!buf) { + return AVERROR(ENOMEM); +@@ -639,6 +631,11 @@ + put_bits(&pbc, 9, info->substream[i].chan_loc); + } + } ++ if (info->complexity_index_type_a) { ++ put_bits(&pbc, 7, 0); /* reserved */ ++ put_bits(&pbc, 1, 1); // flag_eac3_extension_type_a ++ put_bits(&pbc, 8, info->complexity_index_type_a); ++ } + flush_put_bits(&pbc); + size = put_bytes_output(&pbc); + +@@ -4055,6 +4052,41 @@ return len + 24; } @@ -1767,7 +3117,7 @@ diff -Naur ffmpeg-7.1.1.old/libavformat/movenc.c ffmpeg-7.1.1/libavformat/movenc static int mov_write_track_metadata(AVIOContext *pb, AVStream *st, const char *tag, const char *str) { -@@ -4129,8 +4165,23 @@ +@@ -4129,8 +4161,23 @@ if (ret < 0) return ret; @@ -1792,7 +3142,165 @@ diff -Naur ffmpeg-7.1.1.old/libavformat/movenc.c ffmpeg-7.1.1/libavformat/movenc if (mov->mode & MODE_MP4) { if ((ret = mov_write_track_kinds(pb_buf, st)) < 0) -@@ -4727,35 +4778,6 @@ +@@ -4505,20 +4552,66 @@ + return size; + } + ++/* iTunes iTMF metadata */ ++static int mov_write_itmf_tag(AVIOContext *pb, AVFormatContext *s, ++ const char *name, const char *tag) ++{ ++ AVDictionaryEntry *t = av_dict_get(s->metadata, tag, NULL, 0); ++ uint64_t size = 0; ++ if (t) { ++ size_t name_len = strlen(name); ++ size_t value_len = strlen(t->value); ++ size = 8 + 28 + 12 + name_len + 16 + value_len; ++ ++ if (size > INT_MAX) { ++ av_log(s, AV_LOG_WARNING, ++ "Unable to write %s, invalid value len %ld\n", ++ name, value_len); ++ return 0; ++ } ++ ++ avio_wb32(pb, size); // size ++ ffio_wfourcc(pb, "----"); // type ++ ++ avio_wb32(pb, 28); // size ++ ffio_wfourcc(pb, "mean"); // type ++ avio_wb32(pb, 0); // version + flags ++ avio_write(pb, "com.apple.iTunes", 16); ++ ++ avio_wb32(pb, 12 + name_len); // size ++ ffio_wfourcc(pb, "name"); // type ++ avio_wb32(pb, 0); // version + flags ++ avio_write(pb, name, name_len); ++ ++ avio_wb32(pb, 16 + value_len); // size ++ ffio_wfourcc(pb, "data"); // type ++ avio_wb16(pb, 0); // typeReserved ++ avio_w8(pb, 0); // typeSetIdentifier ++ avio_w8(pb, 1); // typeCode = UTF-8 ++ avio_wb32(pb, 0); // locale ++ avio_write(pb, t->value, value_len); ++ } ++ return size; ++} ++ + static int mov_write_int8_metadata(AVFormatContext *s, AVIOContext *pb, + const char *name, const char *tag, + int len) + { + AVDictionaryEntry *t = NULL; +- uint8_t num; ++ uint64_t num; + int size = 24 + len; + +- if (len != 1 && len != 4) ++ if (len != 1 && len != 4 && ++ len != 2 && len != 8) + return -1; + + if (!(t = av_dict_get(s->metadata, tag, NULL, 0))) + return 0; +- num = atoi(t->value); ++ if (len <= 4) ++ num = atoi(t->value); ++ else ++ num = atol(t->value); + + avio_wb32(pb, size); + ffio_wfourcc(pb, name); +@@ -4526,7 +4619,9 @@ + ffio_wfourcc(pb, "data"); + avio_wb32(pb, 0x15); + avio_wb32(pb, 0); +- if (len==4) avio_wb32(pb, num); ++ if (len==8) avio_wb64(pb, num); ++ else if (len==4) avio_wb32(pb, num); ++ else if (len==2) avio_wb16(pb, num); + else avio_w8 (pb, num); + + return size; +@@ -4582,6 +4677,8 @@ + mov_write_string_metadata(s, pb, "\251lyr", "lyrics" , 1); + mov_write_string_metadata(s, pb, "desc", "description",1); + mov_write_string_metadata(s, pb, "ldes", "synopsis" , 1); ++ mov_write_string_metadata(s, pb, "sdes", "series_description", 1); ++ mov_write_string_metadata(s, pb, "rtng", "rating", 1); + mov_write_string_metadata(s, pb, "tvsh", "show" , 1); + mov_write_string_metadata(s, pb, "tven", "episode_id",1); + mov_write_string_metadata(s, pb, "tvnn", "network" , 1); +@@ -4592,10 +4689,67 @@ + mov_write_int8_metadata (s, pb, "hdvd", "hd_video", 1); + mov_write_int8_metadata (s, pb, "pgap", "gapless_playback",1); + mov_write_int8_metadata (s, pb, "cpil", "compilation", 1); ++ ++ mov_write_string_metadata(s, pb, "\251st3", "subtitle" , 1); ++ mov_write_string_metadata(s, pb, "\251des", "song_description", 1); ++ mov_write_string_metadata(s, pb, "\251dir", "director" , 1); ++ mov_write_string_metadata(s, pb, "\251ard", "art_director" , 1); ++ mov_write_string_metadata(s, pb, "\251arg", "arranger" , 1); ++ mov_write_string_metadata(s, pb, "\251aut", "author" , 1); ++ mov_write_string_metadata(s, pb, "\251cak", "acknowledgement" , 1); ++ mov_write_string_metadata(s, pb, "\251con", "conductor" , 1); ++ ++ mov_write_string_metadata(s, pb, "\251wrk", "work_name" , 1); ++ mov_write_string_metadata(s, pb, "\251mvn", "movement_name" , 1); ++ mov_write_int8_metadata (s, pb, "\251mvi", "movement_number", 2); ++ mov_write_int8_metadata (s, pb, "\251mvc", "movement_count" , 2); ++ mov_write_int8_metadata (s, pb, "shwm", "show_work_and_movement", 1); ++ ++ mov_write_string_metadata(s, pb, "\251lnt", "linear_notes" , 1); ++ mov_write_string_metadata(s, pb, "\251mak", "make" , 1); // Record company ++ mov_write_string_metadata(s, pb, "\251ope", "original_artist" , 1); ++ mov_write_string_metadata(s, pb, "\251phg", "phonogram_rights" , 1); ++ mov_write_string_metadata(s, pb, "\251prd", "producer" , 1); ++ mov_write_string_metadata(s, pb, "\251prf", "performers" , 1); ++ mov_write_string_metadata(s, pb, "\251pub", "publisher" , 1); ++ mov_write_string_metadata(s, pb, "\251sne", "sound_engineer" , 1); ++ mov_write_string_metadata(s, pb, "\251sol", "soloist" , 1); ++ mov_write_string_metadata(s, pb, "\251src", "original_source" , 1); // Credits ++ mov_write_string_metadata(s, pb, "\251thx", "thanks" , 1); ++ mov_write_string_metadata(s, pb, "\251url", "URL" , 1); // Online extras ++ mov_write_string_metadata(s, pb, "\251xpd", "executive_producer", 1); ++ ++ mov_write_string_metadata(s, pb, "sonm", "sort_name" , 1); ++ mov_write_string_metadata(s, pb, "soar", "sort_artist" , 1); ++ mov_write_string_metadata(s, pb, "soaa", "sort_album_artist", 1); ++ mov_write_string_metadata(s, pb, "soal", "sort_album" , 1); ++ mov_write_string_metadata(s, pb, "soco", "sort_composer" , 1); ++ mov_write_string_metadata(s, pb, "sosn", "sort_show" , 1); ++ ++ mov_write_string_metadata(s, pb, "\251enc", "encoder" , 1); // Encoded by ++ mov_write_string_metadata(s, pb, "purd", "purchase_date" , 1); ++ ++ mov_write_int8_metadata (s, pb, "itnu", "itunes_u" , 1); ++ mov_write_int8_metadata (s, pb, "pcst", "podcast" , 1); ++ mov_write_string_metadata(s, pb, "catg", "category" , 1); ++ ++ mov_write_string_metadata(s, pb, "apID", "account_id" , 1); ++ mov_write_int8_metadata (s, pb, "akID", "account_type" , 1); ++ mov_write_int8_metadata (s, pb, "sfID", "itunes_country", 4); ++ mov_write_int8_metadata (s, pb, "cnID", "content_id" , 4); ++ mov_write_int8_metadata (s, pb, "atID", "artist_id" , 4); ++ mov_write_int8_metadata (s, pb, "plID", "playlist_id" , 8); ++ mov_write_int8_metadata (s, pb, "geID", "genre_id" , 4); ++ mov_write_int8_metadata (s, pb, "cmID", "composer_id" , 4); ++ mov_write_string_metadata(s, pb, "xid ", "xid" , 1); ++ + mov_write_covr(pb, s); + mov_write_trkn_tag(pb, mov, s, 0); // track number + mov_write_trkn_tag(pb, mov, s, 1); // disc number + mov_write_tmpo_tag(pb, s); ++ mov_write_itmf_tag(pb, s, "iTunEXTC", "iTunEXTC"); ++ mov_write_itmf_tag(pb, s, "iTunMOVI", "iTunMOVI"); ++ + return update_size(pb, pos); + } + +@@ -4727,35 +4881,6 @@ return 0; } @@ -1828,7 +3336,7 @@ diff -Naur ffmpeg-7.1.1.old/libavformat/movenc.c ffmpeg-7.1.1/libavformat/movenc static int mov_write_chpl_tag(AVIOContext *pb, AVFormatContext *s) { int64_t pos = avio_tell(pb); -@@ -4794,14 +4816,14 @@ +@@ -4794,14 +4919,14 @@ return ret; if (mov->mode & MODE_3GP) { @@ -1851,9 +3359,9 @@ diff -Naur ffmpeg-7.1.1.old/libavformat/movenc.c ffmpeg-7.1.1/libavformat/movenc mov_write_loci_tag(s, pb_buf); } else if (mov->mode == MODE_MOV && !(mov->flags & FF_MOV_FLAG_USE_MDTA)) { // the title field breaks gtkpod with mp4 and my suspicion is that stuff is not valid in mp4 mov_write_string_metadata(s, pb_buf, "\251ART", "artist", 0); -diff -Naur ffmpeg-7.1.1.old/libavutil/frame.c ffmpeg-7.1.1/libavutil/frame.c ---- ffmpeg-7.1.1.old/libavutil/frame.c 2025-03-24 10:54:38.298758366 +0100 -+++ ffmpeg-7.1.1/libavutil/frame.c 2025-03-24 10:54:39.274197994 +0100 +diff -Naur ffmpeg-7.1.2.old/libavutil/frame.c ffmpeg-7.1.2/libavutil/frame.c +--- ffmpeg-7.1.2.old/libavutil/frame.c 2025-10-27 10:07:00.804475889 +0100 ++++ ffmpeg-7.1.2/libavutil/frame.c 2025-10-27 10:07:02.436386459 +0100 @@ -45,6 +45,7 @@ [AV_FRAME_DATA_FILM_GRAIN_PARAMS] = { "Film grain parameters" }, [AV_FRAME_DATA_DETECTION_BBOXES] = { "Bounding boxes for object detection and classification" }, @@ -1862,9 +3370,9 @@ diff -Naur ffmpeg-7.1.1.old/libavutil/frame.c ffmpeg-7.1.1/libavutil/frame.c [AV_FRAME_DATA_DOVI_METADATA] = { "Dolby Vision Metadata" }, [AV_FRAME_DATA_LCEVC] = { "LCEVC NAL data" }, [AV_FRAME_DATA_VIEW_ID] = { "View ID" }, -diff -Naur ffmpeg-7.1.1.old/libavutil/frame.h ffmpeg-7.1.1/libavutil/frame.h ---- ffmpeg-7.1.1.old/libavutil/frame.h 2025-03-24 10:54:38.287758234 +0100 -+++ ffmpeg-7.1.1/libavutil/frame.h 2025-03-24 10:54:39.274296419 +0100 +diff -Naur ffmpeg-7.1.2.old/libavutil/frame.h ffmpeg-7.1.2/libavutil/frame.h +--- ffmpeg-7.1.2.old/libavutil/frame.h 2025-10-27 10:07:00.786475730 +0100 ++++ ffmpeg-7.1.2/libavutil/frame.h 2025-10-27 10:07:02.436480126 +0100 @@ -201,6 +201,12 @@ AV_FRAME_DATA_DOVI_RPU_BUFFER, @@ -1878,9 +3386,38 @@ diff -Naur ffmpeg-7.1.1.old/libavutil/frame.h ffmpeg-7.1.1/libavutil/frame.h * Parsed Dolby Vision metadata, suitable for passing to a software * implementation. The payload is the AVDOVIMetadata struct defined in * libavutil/dovi_meta.h. -diff -Naur ffmpeg-7.1.1.old/libswscale/swscale_unscaled.c ffmpeg-7.1.1/libswscale/swscale_unscaled.c ---- ffmpeg-7.1.1.old/libswscale/swscale_unscaled.c 2025-03-24 10:54:38.201757199 +0100 -+++ ffmpeg-7.1.1/libswscale/swscale_unscaled.c 2025-03-24 10:54:39.272233834 +0100 +diff -Naur ffmpeg-7.1.2.old/libavutil/hwcontext_videotoolbox.c ffmpeg-7.1.2/libavutil/hwcontext_videotoolbox.c +--- ffmpeg-7.1.2.old/libavutil/hwcontext_videotoolbox.c 2025-10-27 10:07:00.813475968 +0100 ++++ ffmpeg-7.1.2/libavutil/hwcontext_videotoolbox.c 2025-10-27 10:07:02.457067390 +0100 +@@ -183,7 +183,8 @@ + VTFramesContext *fctx = ctx->hwctx; + AVVTFramesContext *hw_ctx = &fctx->p; + CVReturn err; +- CFNumberRef w, h, pixfmt; ++ CFNumberRef w, h, extend_w_num, extend_h_num, pixfmt; ++ int extend_w, extend_h; + uint32_t cv_pixfmt; + CFMutableDictionaryRef attributes, iosurface_properties; + +@@ -216,6 +217,15 @@ + CFRelease(w); + CFRelease(h); + ++ extend_w = FFALIGN(ctx->width, 16) - ctx->width; ++ extend_h = FFALIGN(ctx->height, 16) - ctx->height; ++ extend_w_num = CFNumberCreate(NULL, kCFNumberSInt32Type, &extend_w); ++ extend_h_num = CFNumberCreate(NULL, kCFNumberSInt32Type, &extend_h); ++ CFDictionarySetValue(attributes, kCVPixelBufferExtendedPixelsRightKey, extend_w_num); ++ CFDictionarySetValue(attributes, kCVPixelBufferExtendedPixelsBottomKey, extend_h_num); ++ CFRelease(extend_w_num); ++ CFRelease(extend_h_num); ++ + err = CVPixelBufferPoolCreate( + NULL, + NULL, +diff -Naur ffmpeg-7.1.2.old/libswscale/swscale_unscaled.c ffmpeg-7.1.2/libswscale/swscale_unscaled.c +--- ffmpeg-7.1.2.old/libswscale/swscale_unscaled.c 2025-10-27 10:07:00.644474477 +0100 ++++ ffmpeg-7.1.2/libswscale/swscale_unscaled.c 2025-10-27 10:07:02.433490262 +0100 @@ -341,7 +341,7 @@ const uint8_t *tsrc0 = src[0]; for (x = c->srcW; x > 0; x--) { diff --git a/anda/multimedia/ffmpeg/ffmpeg-LCEVCdec-4.patch b/anda/multimedia/ffmpeg/ffmpeg-LCEVCdec-4.patch new file mode 100644 index 0000000000..ae0aa51e88 --- /dev/null +++ b/anda/multimedia/ffmpeg/ffmpeg-LCEVCdec-4.patch @@ -0,0 +1,42 @@ +diff -Naur ffmpeg-7.1.2.old/libavcodec/lcevcdec.c ffmpeg-7.1.2/libavcodec/lcevcdec.c +--- ffmpeg-7.1.2.old/libavcodec/lcevcdec.c 2025-10-27 10:07:00.369472051 +0100 ++++ ffmpeg-7.1.2/libavcodec/lcevcdec.c 2025-10-27 10:07:01.223246583 +0100 +@@ -139,7 +139,7 @@ + if (!sd) + return 1; + +- res = LCEVC_SendDecoderEnhancementData(lcevc->decoder, in->pts, 0, sd->data, sd->size); ++ res = LCEVC_SendDecoderEnhancementData(lcevc->decoder, (uint64_t) in->pts, sd->data, sd->size); + if (res != LCEVC_Success) + return AVERROR_EXTERNAL; + +@@ -147,7 +147,7 @@ + if (ret < 0) + return ret; + +- res = LCEVC_SendDecoderBase(lcevc->decoder, in->pts, 0, picture, -1, NULL); ++ res = LCEVC_SendDecoderBase(lcevc->decoder, (uint64_t) in->pts, picture, -1, NULL); + if (res != LCEVC_Success) + return AVERROR_EXTERNAL; + +diff -Naur ffmpeg-7.1.2.old/libavfilter/vf_lcevc.c ffmpeg-7.1.2/libavfilter/vf_lcevc.c +--- ffmpeg-7.1.2.old/libavfilter/vf_lcevc.c 2025-10-27 10:07:00.732521928 +0100 ++++ ffmpeg-7.1.2/libavfilter/vf_lcevc.c 2025-10-27 10:07:01.223846623 +0100 +@@ -139,7 +139,7 @@ + return ret; + + if (sd) { +- res = LCEVC_SendDecoderEnhancementData(lcevc->decoder, in->pts, 0, sd->data, sd->size); ++ res = LCEVC_SendDecoderEnhancementData(lcevc->decoder, (uint64_t) in->pts, sd->data, sd->size); + if (res == LCEVC_Again) + return AVERROR(EAGAIN); + else if (res != LCEVC_Success) { +@@ -148,7 +148,7 @@ + } + } + +- res = LCEVC_SendDecoderBase(lcevc->decoder, in->pts, 0, picture, -1, in); ++ res = LCEVC_SendDecoderBase(lcevc->decoder, (uint64_t) in->pts, picture, -1, in); + if (res != LCEVC_Success) { + av_log(ctx, AV_LOG_ERROR, "LCEVC_SendDecoderBase failed\n"); + LCEVC_FreePicture(lcevc->decoder, picture); diff --git a/anda/multimedia/ffmpeg/ffmpeg-chromium.patch b/anda/multimedia/ffmpeg/ffmpeg-chromium.patch index cf9b9c8d6f..5c8c6cbfd9 100644 --- a/anda/multimedia/ffmpeg/ffmpeg-chromium.patch +++ b/anda/multimedia/ffmpeg/ffmpeg-chromium.patch @@ -1,6 +1,6 @@ -diff -Naur ffmpeg-7.1.1.old/libavformat/avformat.h ffmpeg-7.1.1/libavformat/avformat.h ---- ffmpeg-7.1.1.old/libavformat/avformat.h 2025-03-24 10:54:38.357759076 +0100 -+++ ffmpeg-7.1.1/libavformat/avformat.h 2025-03-24 10:54:39.096586841 +0100 +diff -Naur ffmpeg-7.1.2.old/libavformat/avformat.h ffmpeg-7.1.2/libavformat/avformat.h +--- ffmpeg-7.1.2.old/libavformat/avformat.h 2025-10-27 10:07:00.895476692 +0100 ++++ ffmpeg-7.1.2/libavformat/avformat.h 2025-10-27 10:07:01.866348795 +0100 @@ -1202,6 +1202,10 @@ struct AVCodecParserContext *av_stream_get_parser(const AVStream *s); @@ -12,9 +12,9 @@ diff -Naur ffmpeg-7.1.1.old/libavformat/avformat.h ffmpeg-7.1.1/libavformat/avfo #define AV_PROGRAM_RUNNING 1 /** -diff -Naur ffmpeg-7.1.1.old/libavformat/utils.c ffmpeg-7.1.1/libavformat/utils.c ---- ffmpeg-7.1.1.old/libavformat/utils.c 2025-03-24 10:54:38.360759112 +0100 -+++ ffmpeg-7.1.1/libavformat/utils.c 2025-03-24 10:54:39.097179227 +0100 +diff -Naur ffmpeg-7.1.2.old/libavformat/utils.c ffmpeg-7.1.2/libavformat/utils.c +--- ffmpeg-7.1.2.old/libavformat/utils.c 2025-10-27 10:07:00.899476727 +0100 ++++ ffmpeg-7.1.2/libavformat/utils.c 2025-10-27 10:07:01.866992658 +0100 @@ -44,6 +44,13 @@ * various utility functions for use within FFmpeg */ @@ -28,3 +28,4 @@ diff -Naur ffmpeg-7.1.1.old/libavformat/utils.c ffmpeg-7.1.1/libavformat/utils.c + /* an arbitrarily chosen "sane" max packet size -- 50M */ #define SANE_CHUNK_SIZE (50000000) + diff --git a/anda/multimedia/ffmpeg/ffmpeg-cuda-13.patch b/anda/multimedia/ffmpeg/ffmpeg-cuda-13.patch new file mode 100644 index 0000000000..28bba4a1a7 --- /dev/null +++ b/anda/multimedia/ffmpeg/ffmpeg-cuda-13.patch @@ -0,0 +1,13 @@ +diff -Naur ffmpeg-7.1.2.old/configure ffmpeg-7.1.2/configure +--- ffmpeg-7.1.2.old/configure 2025-10-27 10:07:02.273543997 +0100 ++++ ffmpeg-7.1.2/configure 2025-10-27 10:07:02.276510125 +0100 +@@ -4710,6 +4710,9 @@ + if $nvcc $nvccflags_default 2>&1 | grep -qi unsupported; then + nvccflags_default="-gencode arch=compute_60,code=sm_60 -O2" + fi ++ if $nvcc $nvccflags_default 2>&1 | grep -qi unsupported; then ++ nvccflags_default="-gencode arch=compute_75,code=sm_75 -O2" ++ fi + fi + + set_default arch cc cxx doxygen pkg_config ranlib strip sysinclude \ diff --git a/anda/multimedia/ffmpeg/ffmpeg-decklink-14.patch b/anda/multimedia/ffmpeg/ffmpeg-decklink-14.patch new file mode 100644 index 0000000000..779e398257 --- /dev/null +++ b/anda/multimedia/ffmpeg/ffmpeg-decklink-14.patch @@ -0,0 +1,454 @@ +diff -Naur ffmpeg-7.1.2.old/doc/outdevs.texi ffmpeg-7.1.2/doc/outdevs.texi +--- ffmpeg-7.1.2.old/doc/outdevs.texi 2025-10-27 10:07:00.979477433 +0100 ++++ ffmpeg-7.1.2/doc/outdevs.texi 2025-10-27 10:07:02.002148270 +0100 +@@ -240,6 +240,10 @@ + outgoing VANC data will be dropped. + Defaults to @samp{1048576}. + ++@item block_until_available ++Retries output if device appears unavailable. Retry rate is 60 times a second. ++Defaults to @option{0}. ++ + @end table + + @subsection Examples +diff -Naur ffmpeg-7.1.2.old/fftools/ffmpeg_sched.c ffmpeg-7.1.2/fftools/ffmpeg_sched.c +--- ffmpeg-7.1.2.old/fftools/ffmpeg_sched.c 2025-10-27 10:07:01.220479559 +0100 ++++ ffmpeg-7.1.2/fftools/ffmpeg_sched.c 2025-10-27 10:07:02.002549025 +0100 +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include + + #include "cmdutils.h" + #include "ffmpeg_sched.h" +diff -Naur ffmpeg-7.1.2.old/libavdevice/decklink_common_c.h ffmpeg-7.1.2/libavdevice/decklink_common_c.h +--- ffmpeg-7.1.2.old/libavdevice/decklink_common_c.h 2025-10-27 10:07:00.829476109 +0100 ++++ ffmpeg-7.1.2/libavdevice/decklink_common_c.h 2025-10-27 10:07:02.003002589 +0100 +@@ -74,6 +74,7 @@ + int64_t timestamp_align; + int timing_offset; + int wait_for_tc; ++ int block_until_available; + DecklinkSignalLossAction signal_loss_action; + }; + +diff -Naur ffmpeg-7.1.2.old/libavdevice/decklink_common.cpp ffmpeg-7.1.2/libavdevice/decklink_common.cpp +--- ffmpeg-7.1.2.old/libavdevice/decklink_common.cpp 2025-10-27 10:07:00.828476101 +0100 ++++ ffmpeg-7.1.2/libavdevice/decklink_common.cpp 2025-10-27 10:07:02.003115933 +0100 +@@ -25,7 +25,7 @@ + #include "libavformat/internal.h" + } + +-#include ++#include + #ifdef _WIN32 + #include + #else +@@ -53,6 +53,7 @@ + + #include "decklink_common.h" + ++ + static IDeckLinkIterator *decklink_create_iterator(AVFormatContext *avctx) + { + IDeckLinkIterator *iter; +@@ -512,8 +513,8 @@ + return AVERROR(EIO); + + while (ret == 0 && iter->Next(&dl) == S_OK) { +- IDeckLinkOutput *output_config; +- IDeckLinkInput *input_config; ++ IDeckLinkOutput_v14_2_1 *output_config; ++ IDeckLinkInput_v14_2_1 *input_config; + const char *display_name = NULL; + const char *unique_name = NULL; + AVDeviceInfo *new_device = NULL; +@@ -527,14 +528,14 @@ + goto next; + + if (show_outputs) { +- if (dl->QueryInterface(IID_IDeckLinkOutput, (void **)&output_config) == S_OK) { ++ if (dl->QueryInterface(IID_IDeckLinkOutput_v14_2_1, (void **)&output_config) == S_OK) { + output_config->Release(); + add = 1; + } + } + + if (show_inputs) { +- if (dl->QueryInterface(IID_IDeckLinkInput, (void **)&input_config) == S_OK) { ++ if (dl->QueryInterface(IID_IDeckLinkInput_v14_2_1, (void **)&input_config) == S_OK) { + input_config->Release(); + add = 1; + } +diff -Naur ffmpeg-7.1.2.old/libavdevice/decklink_common.h ffmpeg-7.1.2/libavdevice/decklink_common.h +--- ffmpeg-7.1.2.old/libavdevice/decklink_common.h 2025-10-27 10:07:00.831476127 +0100 ++++ ffmpeg-7.1.2/libavdevice/decklink_common.h 2025-10-27 10:07:02.003408083 +0100 +@@ -93,8 +93,8 @@ + struct decklink_ctx { + /* DeckLink SDK interfaces */ + IDeckLink *dl; +- IDeckLinkOutput *dlo; +- IDeckLinkInput *dli; ++ IDeckLinkOutput_v14_2_1 *dlo; ++ IDeckLinkInput_v14_2_1 *dli; + IDeckLinkConfiguration *cfg; + IDeckLinkProfileAttributes *attr; + decklink_output_callback *output_callback; +@@ -134,7 +134,6 @@ + AVStream *klv_st; + AVStream *teletext_st; + uint16_t cdp_sequence_num; +- + /* Options */ + int list_devices; + int list_formats; +@@ -149,13 +148,16 @@ + BMDPixelFormat raw_format; + DecklinkSignalLossAction signal_loss_action; + ++ + int frames_preroll; + int frames_buffer; + + pthread_mutex_t mutex; + pthread_cond_t cond; + int frames_buffer_available_spots; ++ int outstanding_frames; + int autodetect; ++ int block_until_available; + + #if CONFIG_LIBKLVANC + struct klvanc_context_s *vanc_ctx; +@@ -249,3 +251,4 @@ + int64_t ff_decklink_packet_queue_peekpts(DecklinkPacketQueue *q); + + #endif /* AVDEVICE_DECKLINK_COMMON_H */ ++ +diff -Naur ffmpeg-7.1.2.old/libavdevice/decklink_dec.cpp ffmpeg-7.1.2/libavdevice/decklink_dec.cpp +--- ffmpeg-7.1.2.old/libavdevice/decklink_dec.cpp 2025-10-27 10:07:00.828476101 +0100 ++++ ffmpeg-7.1.2/libavdevice/decklink_dec.cpp 2025-10-27 10:07:02.003669356 +0100 +@@ -31,7 +31,7 @@ + #include "libavformat/internal.h" + } + +-#include ++#include + + extern "C" { + #include "config.h" +@@ -56,6 +56,7 @@ + #include "decklink_common.h" + #include "decklink_dec.h" + ++extern bool operator==(const REFIID& me, const REFIID& other); + #define MAX_WIDTH_VANC 1920 + const BMDDisplayMode AUTODETECT_DEFAULT_MODE = bmdModeNTSC; + +@@ -105,13 +106,13 @@ + {bmdModeUnknown, 0, -1, -1, -1} + }; + +-class decklink_allocator : public IDeckLinkMemoryAllocator ++class decklink_allocator : public IDeckLinkMemoryAllocator_v14_2_1 + { + public: + decklink_allocator(): _refs(1) { } + virtual ~decklink_allocator() { } + +- // IDeckLinkMemoryAllocator methods ++ // IDeckLinkMemoryAllocator_v14_2_1 methods + virtual HRESULT STDMETHODCALLTYPE AllocateBuffer(unsigned int bufferSize, void* *allocatedBuffer) + { + void *buf = av_malloc(bufferSize + AV_INPUT_BUFFER_PADDING_SIZE); +@@ -129,7 +130,15 @@ + virtual HRESULT STDMETHODCALLTYPE Decommit() { return S_OK; } + + // IUnknown methods +- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, LPVOID *ppv) { return E_NOINTERFACE; } ++ virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, LPVOID *ppv) ++ { ++ if (iid == IID_IDeckLinkMemoryAllocator_v14_2_1) { ++ *ppv = (IDeckLinkMemoryAllocator_v14_2_1*)this; ++ AddRef(); ++ return S_OK; ++ } ++ return E_NOINTERFACE; ++ } + virtual ULONG STDMETHODCALLTYPE AddRef(void) { return ++_refs; } + virtual ULONG STDMETHODCALLTYPE Release(void) + { +@@ -472,7 +481,7 @@ + } + + +-static void handle_klv(AVFormatContext *avctx, decklink_ctx *ctx, IDeckLinkVideoInputFrame *videoFrame, int64_t pts) ++static void handle_klv(AVFormatContext *avctx, decklink_ctx *ctx, IDeckLinkVideoInputFrame_v14_2_1 *videoFrame, int64_t pts) + { + const uint8_t KLV_DID = 0x44; + const uint8_t KLV_IN_VANC_SDID = 0x04; +@@ -574,17 +583,25 @@ + } + } + +-class decklink_input_callback : public IDeckLinkInputCallback ++class decklink_input_callback : public IDeckLinkInputCallback_v14_2_1 + { + public: + explicit decklink_input_callback(AVFormatContext *_avctx); + ~decklink_input_callback(); + +- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, LPVOID *ppv) { return E_NOINTERFACE; } ++ virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, LPVOID *ppv) ++ { ++ if (iid == IID_IDeckLinkInputCallback_v14_2_1) { ++ *ppv = (IDeckLinkInputCallback_v14_2_1*)this; ++ AddRef(); ++ return S_OK; ++ } ++ return E_NOINTERFACE; ++ } + virtual ULONG STDMETHODCALLTYPE AddRef(void); + virtual ULONG STDMETHODCALLTYPE Release(void); + virtual HRESULT STDMETHODCALLTYPE VideoInputFormatChanged(BMDVideoInputFormatChangedEvents, IDeckLinkDisplayMode*, BMDDetectedVideoInputFormatFlags); +- virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived(IDeckLinkVideoInputFrame*, IDeckLinkAudioInputPacket*); ++ virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived(IDeckLinkVideoInputFrame_v14_2_1*, IDeckLinkAudioInputPacket*); + + private: + std::atomic _refs; +@@ -593,7 +610,7 @@ + int no_video; + int64_t initial_video_pts; + int64_t initial_audio_pts; +- IDeckLinkVideoInputFrame* last_video_frame; ++ IDeckLinkVideoInputFrame_v14_2_1* last_video_frame; + }; + + decklink_input_callback::decklink_input_callback(AVFormatContext *_avctx) : _refs(1) +@@ -625,7 +642,7 @@ + return ret; + } + +-static int64_t get_pkt_pts(IDeckLinkVideoInputFrame *videoFrame, ++static int64_t get_pkt_pts(IDeckLinkVideoInputFrame_v14_2_1 *videoFrame, + IDeckLinkAudioInputPacket *audioFrame, + int64_t wallclock, + int64_t abs_wallclock, +@@ -679,7 +696,7 @@ + return pts; + } + +-static int get_bmd_timecode(AVFormatContext *avctx, AVTimecode *tc, AVRational frame_rate, BMDTimecodeFormat tc_format, IDeckLinkVideoInputFrame *videoFrame) ++static int get_bmd_timecode(AVFormatContext *avctx, AVTimecode *tc, AVRational frame_rate, BMDTimecodeFormat tc_format, IDeckLinkVideoInputFrame_v14_2_1 *videoFrame) + { + IDeckLinkTimecode *timecode; + int ret = AVERROR(ENOENT); +@@ -701,7 +718,7 @@ + return ret; + } + +-static int get_frame_timecode(AVFormatContext *avctx, decklink_ctx *ctx, AVTimecode *tc, IDeckLinkVideoInputFrame *videoFrame) ++static int get_frame_timecode(AVFormatContext *avctx, decklink_ctx *ctx, AVTimecode *tc, IDeckLinkVideoInputFrame_v14_2_1 *videoFrame) + { + AVRational frame_rate = ctx->video_st->r_frame_rate; + int ret; +@@ -726,7 +743,7 @@ + } + + HRESULT decklink_input_callback::VideoInputFrameArrived( +- IDeckLinkVideoInputFrame *videoFrame, IDeckLinkAudioInputPacket *audioFrame) ++ IDeckLinkVideoInputFrame_v14_2_1 *videoFrame, IDeckLinkAudioInputPacket *audioFrame) + { + void *frameBytes; + void *audioFrameBytes; +@@ -1141,7 +1158,7 @@ + goto error; + + /* Get input device. */ +- if (ctx->dl->QueryInterface(IID_IDeckLinkInput, (void **) &ctx->dli) != S_OK) { ++ if (ctx->dl->QueryInterface(IID_IDeckLinkInput_v14_2_1, (void **) &ctx->dli) != S_OK) { + av_log(avctx, AV_LOG_ERROR, "Could not open input device from '%s'\n", + avctx->url); + ret = AVERROR(EIO); +diff -Naur ffmpeg-7.1.2.old/libavdevice/decklink_enc_c.c ffmpeg-7.1.2/libavdevice/decklink_enc_c.c +--- ffmpeg-7.1.2.old/libavdevice/decklink_enc_c.c 2025-10-27 10:07:00.833476145 +0100 ++++ ffmpeg-7.1.2/libavdevice/decklink_enc_c.c 2025-10-27 10:07:02.004050964 +0100 +@@ -32,6 +32,7 @@ + { "list_devices", "use ffmpeg -sinks decklink instead", OFFSET(list_devices), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, ENC | AV_OPT_FLAG_DEPRECATED}, + { "list_formats", "list supported formats" , OFFSET(list_formats), AV_OPT_TYPE_INT , { .i64 = 0 }, 0, 1, ENC }, + { "preroll" , "video preroll in seconds", OFFSET(preroll ), AV_OPT_TYPE_DOUBLE, { .dbl = 0.5 }, 0, 5, ENC }, ++ { "block_until_available", "wait for device to become available instead of raising error", OFFSET(block_until_available), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, ENC }, + { "vanc_queue_size", "VANC queue buffer size", OFFSET(vanc_queue_size), AV_OPT_TYPE_INT64, { .i64 = (1024 * 1024)}, 0, INT64_MAX, ENC }, + #if BLACKMAGIC_DECKLINK_API_VERSION >= 0x0b000000 + { "duplex_mode" , "duplex mode" , OFFSET(duplex_mode ), AV_OPT_TYPE_INT , { .i64 = 0 }, 0, 5, ENC, .unit = "duplex_mode"}, +diff -Naur ffmpeg-7.1.2.old/libavdevice/decklink_enc.cpp ffmpeg-7.1.2/libavdevice/decklink_enc.cpp +--- ffmpeg-7.1.2.old/libavdevice/decklink_enc.cpp 2025-10-27 10:07:00.832476136 +0100 ++++ ffmpeg-7.1.2/libavdevice/decklink_enc.cpp 2025-10-27 10:07:02.004296918 +0100 +@@ -20,6 +20,8 @@ + */ + + #include ++#include ++ + using std::atomic; + + /* Include internal.h first to avoid conflict between winsock.h (used by +@@ -28,7 +30,7 @@ + #include "libavformat/internal.h" + } + +-#include ++#include + + extern "C" { + #include "libavformat/avformat.h" +@@ -47,8 +49,26 @@ + #include "libklvanc/pixels.h" + #endif + ++extern bool operator==(const REFIID& me, const REFIID& other){ ++ return me.byte0 == other.byte0 && ++ me.byte1 == other.byte1 && ++ me.byte2 == other.byte2 && ++ me.byte3 == other.byte3 && ++ me.byte4 == other.byte4 && ++ me.byte5 == other.byte5 && ++ me.byte6 == other.byte6 && ++ me.byte7 == other.byte7 && ++ me.byte8 == other.byte8 && ++ me.byte9 == other.byte9 && ++ me.byte10 == other.byte10 && ++ me.byte11 == other.byte11 && ++ me.byte12 == other.byte12 && ++ me.byte13 == other.byte13 && ++ me.byte14 == other.byte14 && ++ me.byte15 == other.byte15; ++} + /* DeckLink callback class declaration */ +-class decklink_frame : public IDeckLinkVideoFrame ++class decklink_frame : public IDeckLinkVideoFrame_v14_2_1 + { + public: + decklink_frame(struct decklink_ctx *ctx, AVFrame *avframe, AVCodecID codec_id, int height, int width) : +@@ -111,7 +131,16 @@ + _ancillary->AddRef(); + return S_OK; + } +- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, LPVOID *ppv) { return E_NOINTERFACE; } ++ virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, LPVOID *ppv) ++ { ++ if (iid == IID_IDeckLinkVideoFrame_v14_2_1) ++ { ++ *ppv = (IDeckLinkVideoFrame_v14_2_1*)this; ++ AddRef(); ++ return S_OK; ++ } ++ return E_NOINTERFACE; ++ } + virtual ULONG STDMETHODCALLTYPE AddRef(void) { return ++_refs; } + virtual ULONG STDMETHODCALLTYPE Release(void) + { +@@ -138,10 +167,10 @@ + std::atomic _refs; + }; + +-class decklink_output_callback : public IDeckLinkVideoOutputCallback ++class decklink_output_callback : public IDeckLinkVideoOutputCallback_v14_2_1 + { + public: +- virtual HRESULT STDMETHODCALLTYPE ScheduledFrameCompleted(IDeckLinkVideoFrame *_frame, BMDOutputFrameCompletionResult result) ++ virtual HRESULT STDMETHODCALLTYPE ScheduledFrameCompleted(IDeckLinkVideoFrame_v14_2_1 *_frame, BMDOutputFrameCompletionResult result) + { + decklink_frame *frame = static_cast(_frame); + struct decklink_ctx *ctx = frame->_ctx; +@@ -155,11 +184,22 @@ + ctx->frames_buffer_available_spots++; + pthread_cond_broadcast(&ctx->cond); + pthread_mutex_unlock(&ctx->mutex); +- ++ pthread_mutex_lock(&ctx->mutex); ++ ctx->outstanding_frames--; ++ pthread_mutex_unlock(&ctx->mutex); + return S_OK; + } + virtual HRESULT STDMETHODCALLTYPE ScheduledPlaybackHasStopped(void) { return S_OK; } +- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, LPVOID *ppv) { return E_NOINTERFACE; } ++ virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, LPVOID *ppv) ++ { ++ if (iid == IID_IDeckLinkVideoOutputCallback_v14_2_1) ++ { ++ *ppv = (IDeckLinkVideoOutputCallback_v14_2_1*)this; ++ AddRef(); ++ return S_OK; ++ } ++ return E_NOINTERFACE; ++ } + virtual ULONG STDMETHODCALLTYPE AddRef(void) { return 1; } + virtual ULONG STDMETHODCALLTYPE Release(void) { return 1; } + }; +@@ -204,9 +244,14 @@ + av_log(avctx, AV_LOG_WARNING, "Could not enable video output with VANC! Trying without...\n"); + ctx->supports_vanc = 0; + } +- if (!ctx->supports_vanc && ctx->dlo->EnableVideoOutput(ctx->bmd_mode, bmdVideoOutputFlagDefault) != S_OK) { +- av_log(avctx, AV_LOG_ERROR, "Could not enable video output!\n"); +- return -1; ++ while (!ctx->supports_vanc && ctx->dlo->EnableVideoOutput(ctx->bmd_mode, bmdVideoOutputFlagDefault) != S_OK) { ++ if (!ctx->block_until_available) { ++ av_log(avctx, AV_LOG_ERROR, "Could not enable video output!\n"); ++ return -1; ++ }; ++ av_log(avctx, AV_LOG_WARNING, "Could not enable video output, waiting for device...\n"); ++ usleep(1000000 / 60); ++ continue; + } + + /* Set callback. */ +@@ -370,6 +415,10 @@ + struct decklink_cctx *cctx = (struct decklink_cctx *)avctx->priv_data; + struct decklink_ctx *ctx = (struct decklink_ctx *)cctx->ctx; + ++ av_log(avctx, AV_LOG_DEBUG, "Wating for %d outstanding frames to return their results\n", ctx->outstanding_frames); ++ while (ctx->outstanding_frames > 0){ ++ usleep(1); ++ } + if (ctx->playback_started) { + BMDTimeValue actual; + ctx->dlo->StopScheduledPlayback(ctx->last_pts * ctx->bmd_tb_num, +@@ -739,7 +788,7 @@ + ctx->first_pts = pkt->pts; + + /* Schedule frame for playback. */ +- hr = ctx->dlo->ScheduleVideoFrame((class IDeckLinkVideoFrame *) frame, ++ hr = ctx->dlo->ScheduleVideoFrame((class IDeckLinkVideoFrame_v14_2_1 *) frame, + pkt->pts * ctx->bmd_tb_num, + ctx->bmd_tb_num, ctx->bmd_tb_den); + /* Pass ownership to DeckLink, or release on failure */ +@@ -750,6 +799,9 @@ + return AVERROR(EIO); + } + ++ pthread_mutex_lock(&ctx->mutex); ++ ctx->outstanding_frames++; ++ pthread_mutex_unlock(&ctx->mutex); + ctx->dlo->GetBufferedVideoFrameCount(&buffered); + av_log(avctx, AV_LOG_DEBUG, "Buffered video frames: %d.\n", (int) buffered); + if (pkt->pts > 2 && buffered <= 2) +@@ -850,6 +902,7 @@ + ctx->list_devices = cctx->list_devices; + ctx->list_formats = cctx->list_formats; + ctx->preroll = cctx->preroll; ++ ctx->block_until_available = cctx->block_until_available; + ctx->duplex_mode = cctx->duplex_mode; + ctx->first_pts = AV_NOPTS_VALUE; + if (cctx->link > 0 && (unsigned int)cctx->link < FF_ARRAY_ELEMS(decklink_link_conf_map)) +@@ -874,7 +927,7 @@ + return ret; + + /* Get output device. */ +- if (ctx->dl->QueryInterface(IID_IDeckLinkOutput, (void **) &ctx->dlo) != S_OK) { ++ if (ctx->dl->QueryInterface(IID_IDeckLinkOutput_v14_2_1, (void **) &ctx->dlo) != S_OK) { + av_log(avctx, AV_LOG_ERROR, "Could not open output device from '%s'\n", + avctx->url); + ret = AVERROR(EIO); diff --git a/anda/multimedia/ffmpeg/ffmpeg-nvcc.patch b/anda/multimedia/ffmpeg/ffmpeg-nvcc.patch index 88ae668455..7dcf2259c3 100644 --- a/anda/multimedia/ffmpeg/ffmpeg-nvcc.patch +++ b/anda/multimedia/ffmpeg/ffmpeg-nvcc.patch @@ -1,7 +1,7 @@ -diff -Naur ffmpeg-7.1.1.old/configure ffmpeg-7.1.1/configure ---- ffmpeg-7.1.1.old/configure 2025-03-24 11:04:46.377074634 +0100 -+++ ffmpeg-7.1.1/configure 2025-03-24 11:04:54.615698726 +0100 -@@ -6742,7 +6742,7 @@ +diff -Naur ffmpeg-7.1.2.old/configure ffmpeg-7.1.2/configure +--- ffmpeg-7.1.2.old/configure 2025-10-27 10:07:01.862821941 +0100 ++++ ffmpeg-7.1.2/configure 2025-10-27 10:07:02.140469997 +0100 +@@ -6766,7 +6766,7 @@ nvccflags=$nvccflags_default fi diff --git a/anda/multimedia/ffmpeg/ffmpeg-svt-vp9.patch b/anda/multimedia/ffmpeg/ffmpeg-svt-vp9.patch index 351c801512..6bdae213ed 100644 --- a/anda/multimedia/ffmpeg/ffmpeg-svt-vp9.patch +++ b/anda/multimedia/ffmpeg/ffmpeg-svt-vp9.patch @@ -1,6 +1,6 @@ -diff -Naur ffmpeg-7.1.1.old/configure ffmpeg-7.1.1/configure ---- ffmpeg-7.1.1.old/configure 2025-03-24 10:54:38.202757211 +0100 -+++ ffmpeg-7.1.1/configure 2025-03-24 10:54:38.618546808 +0100 +diff -Naur ffmpeg-7.1.2.old/configure ffmpeg-7.1.2/configure +--- ffmpeg-7.1.2.old/configure 2025-10-27 10:07:00.645474486 +0100 ++++ ffmpeg-7.1.2/configure 2025-10-27 10:07:01.726484024 +0100 @@ -278,6 +278,7 @@ --enable-libsrt enable Haivision SRT protocol via libsrt [no] --enable-libssh enable SFTP protocol via libssh [no] @@ -9,7 +9,7 @@ diff -Naur ffmpeg-7.1.1.old/configure ffmpeg-7.1.1/configure --enable-libtensorflow enable TensorFlow as a DNN module backend for DNN based filters like sr [no] --enable-libtesseract enable Tesseract, needed for ocr filter [no] -@@ -1953,6 +1954,7 @@ +@@ -1955,6 +1956,7 @@ libshaderc libshine libsmbclient @@ -17,7 +17,7 @@ diff -Naur ffmpeg-7.1.1.old/configure ffmpeg-7.1.1/configure libsnappy libsoxr libspeex -@@ -3575,6 +3577,7 @@ +@@ -3579,6 +3581,7 @@ libvpx_vp8_encoder_deps="libvpx" libvpx_vp9_decoder_deps="libvpx" libvpx_vp9_encoder_deps="libvpx" @@ -25,17 +25,17 @@ diff -Naur ffmpeg-7.1.1.old/configure ffmpeg-7.1.1/configure libvvenc_encoder_deps="libvvenc" libwebp_encoder_deps="libwebp" libwebp_anim_encoder_deps="libwebp" -@@ -6997,6 +7000,7 @@ - enabled libspeex && require_pkg_config libspeex speex speex/speex.h speex_decoder_init - enabled libsrt && require_pkg_config libsrt "srt >= 1.3.0" srt/srt.h srt_socket - enabled libsvtav1 && require_pkg_config libsvtav1 "SvtAv1Enc >= 0.9.0" EbSvtAv1Enc.h svt_av1_enc_init_handle +@@ -7028,6 +7031,7 @@ + die "ERROR: libtwolame must be installed and version must be >= 0.3.10"; } + enabled libuavs3d && require_pkg_config libuavs3d "uavs3d >= 1.1.41" uavs3d.h uavs3d_decode + enabled libv4l2 && require_pkg_config libv4l2 libv4l2 libv4l2.h v4l2_ioctl +enabled libsvtvp9 && require_pkg_config libsvtvp9 SvtVp9Enc EbSvtVp9Enc.h eb_vp9_svt_init_handle - enabled libtensorflow && require libtensorflow tensorflow/c/c_api.h TF_Version -ltensorflow - enabled libtesseract && require_pkg_config libtesseract tesseract tesseract/capi.h TessBaseAPICreate - enabled libtheora && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg -diff -Naur ffmpeg-7.1.1.old/libavcodec/allcodecs.c ffmpeg-7.1.1/libavcodec/allcodecs.c ---- ffmpeg-7.1.1.old/libavcodec/allcodecs.c 2025-03-24 10:54:38.119756212 +0100 -+++ ffmpeg-7.1.1/libavcodec/allcodecs.c 2025-03-24 10:54:38.619934060 +0100 + enabled libvidstab && require_pkg_config libvidstab "vidstab >= 0.98" vid.stab/libvidstab.h vsMotionDetectInit + enabled libvmaf && require_pkg_config libvmaf "libvmaf >= 2.0.0" libvmaf.h vmaf_init + enabled libvmaf && check_pkg_config libvmaf_cuda "libvmaf >= 2.0.0" libvmaf_cuda.h vmaf_cuda_state_init +diff -Naur ffmpeg-7.1.2.old/libavcodec/allcodecs.c ffmpeg-7.1.2/libavcodec/allcodecs.c +--- ffmpeg-7.1.2.old/libavcodec/allcodecs.c 2025-10-27 10:07:00.517473357 +0100 ++++ ffmpeg-7.1.2/libavcodec/allcodecs.c 2025-10-27 10:07:01.728697010 +0100 @@ -796,6 +796,7 @@ extern const FFCodec ff_libvo_amrwbenc_encoder; extern const FFCodec ff_libvorbis_encoder; @@ -44,9 +44,9 @@ diff -Naur ffmpeg-7.1.1.old/libavcodec/allcodecs.c ffmpeg-7.1.1/libavcodec/allco extern const FFCodec ff_libvpx_vp8_encoder; extern const FFCodec ff_libvpx_vp8_decoder; extern FFCodec ff_libvpx_vp9_encoder; -diff -Naur ffmpeg-7.1.1.old/libavcodec/libsvt_vp9.c ffmpeg-7.1.1/libavcodec/libsvt_vp9.c ---- ffmpeg-7.1.1.old/libavcodec/libsvt_vp9.c 1970-01-01 01:00:00.000000000 +0100 -+++ ffmpeg-7.1.1/libavcodec/libsvt_vp9.c 2025-03-24 10:54:38.620176868 +0100 +diff -Naur ffmpeg-7.1.2.old/libavcodec/libsvt_vp9.c ffmpeg-7.1.2/libavcodec/libsvt_vp9.c +--- ffmpeg-7.1.2.old/libavcodec/libsvt_vp9.c 1970-01-01 01:00:00.000000000 +0100 ++++ ffmpeg-7.1.2/libavcodec/libsvt_vp9.c 2025-10-27 10:07:01.729099438 +0100 @@ -0,0 +1,701 @@ +/* +* Scalable Video Technology for VP9 encoder library plugin @@ -260,11 +260,11 @@ diff -Naur ffmpeg-7.1.1.old/libavcodec/libsvt_vp9.c ffmpeg-7.1.1/libavcodec/libs + param->intra_period = avctx->gop_size - 1; + + if (avctx->framerate.num > 0 && avctx->framerate.den > 0) { -+ param->frame_rate_numerator = avctx->framerate.num; -+ param->frame_rate_denominator = avctx->framerate.den * avctx->ticks_per_frame; ++ param->frame_rate_numerator = avctx->framerate.num; ++ param->frame_rate_denominator = avctx->framerate.den; + } else { -+ param->frame_rate_numerator = avctx->time_base.den; -+ param->frame_rate_denominator = avctx->time_base.num * avctx->ticks_per_frame; ++ param->frame_rate_numerator = avctx->time_base.den; ++ param->frame_rate_denominator = avctx->time_base.num; + } + + if (param->rate_control_mode) { @@ -749,9 +749,9 @@ diff -Naur ffmpeg-7.1.1.old/libavcodec/libsvt_vp9.c ffmpeg-7.1.1/libavcodec/libs + .defaults = eb_enc_defaults, + .p.wrapper_name = "libsvt_vp9", +}; -diff -Naur ffmpeg-7.1.1.old/libavcodec/Makefile ffmpeg-7.1.1/libavcodec/Makefile ---- ffmpeg-7.1.1.old/libavcodec/Makefile 2025-03-24 10:54:37.935753999 +0100 -+++ ffmpeg-7.1.1/libavcodec/Makefile 2025-03-24 10:54:38.620394147 +0100 +diff -Naur ffmpeg-7.1.2.old/libavcodec/Makefile ffmpeg-7.1.2/libavcodec/Makefile +--- ffmpeg-7.1.2.old/libavcodec/Makefile 2025-10-27 10:07:00.259471080 +0100 ++++ ffmpeg-7.1.2/libavcodec/Makefile 2025-10-27 10:07:01.729297932 +0100 @@ -1157,6 +1157,7 @@ OBJS-$(CONFIG_LIBVORBIS_DECODER) += libvorbisdec.o OBJS-$(CONFIG_LIBVORBIS_ENCODER) += libvorbisenc.o \ diff --git a/anda/multimedia/ffmpeg/ffmpeg.spec b/anda/multimedia/ffmpeg/ffmpeg.spec index da82c8b17a..03bfc6ff21 100644 --- a/anda/multimedia/ffmpeg/ffmpeg.spec +++ b/anda/multimedia/ffmpeg/ffmpeg.spec @@ -1,3 +1,13 @@ +%bcond bootstrap 1 + +%if %{with bootstrap} +%bcond chromaprint 0 +%bcond lcevcdec 0 +%else +%bcond chromaprint 1 +%bcond lcevcdec 1 +%endif + %global _lto_cflags %{nil} %global avcodec_soversion 61 @@ -11,9 +21,9 @@ Summary: A complete solution to record, convert and stream audio and video Name: ffmpeg -Version: 8.0 -Release: 1%?dist -License: LGPL-3.0-or-later +Version: 7.1.2 +Release: 4%{?dist} +License: LGPLv3+ URL: http://%{name}.org/ Epoch: 1 @@ -21,17 +31,24 @@ Source0: http://%{name}.org/releases/%{name}-%{version}.tar.xz # https://github.com/OpenVisualCloud/SVT-VP9/tree/master/ffmpeg_plugin Patch0: %{name}-svt-vp9.patch -# https://github.com/HandBrake/HandBrake/tree/e117cfe7fca37abeec59ea4201e5d93ed7477746 -Patch2: %{name}-HandBrake.patch +# https://github.com/HandBrake/HandBrake/tree/8902805364f00e0d420c4d4b33053a31d27045ab +Patch1: %{name}-HandBrake.patch # https://bugzilla.redhat.com/show_bug.cgi?id=2240127 # Reference: https://crbug.com/1306560 -Patch3: %{name}-chromium.patch +Patch2: %{name}-chromium.patch # Fix build with recent NVCC: -Patch4: %{name}-nvcc.patch +Patch3: %{name}-nvcc.patch +# https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/f8a300c6739ea2ca648579d7faf3ae9811b9f19a +Patch4: %{name}-cuda-13.patch +# Support LCEVCdec 4.0+: +Patch5: https://aur.archlinux.org/cgit/aur.git/plain/080-ffmpeg-lcevcdec4.0.0-fix.patch?h=ffmpeg-full#/%{name}-LCEVCdec-4.patch +# https://github.com/magarnicle/FFmpeg/commits/DeckLink_SDK_14_4/ +Patch6: %{name}-decklink-14.patch BuildRequires: AMF-devel >= 1.4.28 BuildRequires: bzip2-devel BuildRequires: codec2-devel +BuildRequires: decklink-devel >= 14.2 BuildRequires: doxygen BuildRequires: frei0r-devel BuildRequires: gmp-devel @@ -40,7 +57,9 @@ BuildRequires: ilbc-devel BuildRequires: lame-devel >= 3.98.3 BuildRequires: ladspa-devel BuildRequires: libavc1394-devel +%if %{with chromaprint} BuildRequires: libchromaprint-devel +%endif BuildRequires: libgcrypt-devel BuildRequires: libiec61883-devel BuildRequires: libklvanc-devel @@ -78,7 +97,9 @@ BuildRequires: pkgconfig(jack) BuildRequires: pkgconfig(kvazaar) >= 0.8.1 BuildRequires: pkgconfig(lc3) >= 1.1.0 BuildRequires: pkgconfig(lcms2) >= 2.13 +%if %{with lcevcdec} BuildRequires: pkgconfig(lcevc_dec) >= 2.0.0 +%endif BuildRequires: pkgconfig(libaribcaption) >= 1.1.1 BuildRequires: pkgconfig(libass) >= 0.11.0 BuildRequires: pkgconfig(libbluray) @@ -127,6 +148,7 @@ BuildRequires: pkgconfig(shaderc) >= 2019.1 BuildRequires: pkgconfig(smbclient) BuildRequires: pkgconfig(speex) BuildRequires: pkgconfig(srt) >= 1.3.0 +BuildRequires: pkgconfig(SvtAv1Enc) >= 0.9.0 BuildRequires: pkgconfig(tesseract) BuildRequires: pkgconfig(uavs3d) >= 1.1.41 BuildRequires: pkgconfig(vapoursynth-script) >= 42 @@ -140,6 +162,8 @@ BuildRequires: pkgconfig(xcb) >= 1.4 BuildRequires: pkgconfig(xcb-shape) BuildRequires: pkgconfig(xcb-shm) BuildRequires: pkgconfig(xcb-xfixes) +BuildRequires: pkgconfig(xevd) >= 0.4.1 +BuildRequires: pkgconfig(xeve) >= 0.4.3 BuildRequires: pkgconfig(xext) BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(x264) @@ -150,21 +174,16 @@ BuildRequires: pkgconfig(zlib) BuildRequires: pkgconfig(zvbi-0.2) >= 0.2.28 %ifarch x86_64 aarch64 -# Nvidia CUVID support and Performance Primitives based code BuildRequires: cuda-cudart-devel BuildRequires: cuda-nvcc -BuildRequires: libnpp-devel BuildRequires: pkgconfig(ffnvcodec) >= 12.0.16.0 %endif %ifarch x86_64 BuildRequires: pkgconfig(libmfx) BuildRequires: pkgconfig(libvmaf) >= 2.0.0 -BuildRequires: pkgconfig(SvtAv1Enc) >= 0.9.0 BuildRequires: pkgconfig(SvtVp9Enc) BuildRequires: pkgconfig(vpl) >= 2.6 -#BuildRequires: pkgconfig(xevd) >= 0.4.1 -#BuildRequires: pkgconfig(xeve) >= 0.4.3 %endif Obsoletes: %{name}-free < %{epoch}:%{version}-%{release} @@ -400,12 +419,6 @@ This subpackage contains the headers for FFmpeg libswscale. #sed -i -e 's|#!/bin/sh|#!/bin/sh -x|g' configure %build -# Work around a new GCC15 change until FFmpeg updates for it -%if 0%{?fedora} >= 42 -%if "%{version}" <= "7.1.1" -export CFLAGS="%{optflags} -Wno-incompatible-pointer-types" -%endif -%endif %set_build_flags ./configure \ @@ -421,7 +434,12 @@ export CFLAGS="%{optflags} -Wno-incompatible-pointer-types" --enable-avformat \ --enable-alsa \ --enable-bzlib \ +%if %{with chromaprint} --enable-chromaprint \ +%else + --disable-chromaprint \ +%endif + --enable-decklink \ --enable-frei0r \ --enable-gcrypt \ --enable-gmp \ @@ -430,7 +448,6 @@ export CFLAGS="%{optflags} -Wno-incompatible-pointer-types" --enable-iconv \ --enable-ladspa \ --enable-lcms2 \ - --enable-libass \ --enable-libaom \ --enable-libaribb24 \ --enable-libaribcaption \ @@ -461,10 +478,15 @@ export CFLAGS="%{optflags} -Wno-incompatible-pointer-types" --enable-libkvazaar \ --enable-liblc3 \ --disable-liblensfun \ +%if %{with lcevcdec} --enable-liblcevc-dec \ +%else + --disable-liblcevc-dec \ +%endif --enable-libmodplug \ --enable-libmp3lame \ --enable-libmysofa \ + --disable-libnpp \ --enable-libopencore-amrnb \ --enable-libopencore-amrwb \ --disable-libopencv \ @@ -486,6 +508,7 @@ export CFLAGS="%{optflags} -Wno-incompatible-pointer-types" --disable-libshine \ --enable-libsmbclient \ --enable-libsnappy \ + --enable-libsvtav1 \ --enable-libsoxr \ --enable-libspeex \ --enable-libsrt \ @@ -511,6 +534,8 @@ export CFLAGS="%{optflags} -Wno-incompatible-pointer-types" --enable-libxcb-shape \ --enable-libxcb-shm \ --enable-libxcb-xfixes \ + --enable-libxevd \ + --enable-libxeve \ --enable-libxml2 \ --enable-libxvid \ --enable-libzimg \ @@ -545,21 +570,18 @@ export CFLAGS="%{optflags} -Wno-incompatible-pointer-types" --prefix=%{_prefix} \ --shlibdir=%{_libdir} \ %ifarch x86_64 aarch64 + --enable-cuda-llvm \ --enable-cuda-nvcc \ --enable-cuvid \ --enable-ffnvcodec \ - --enable-libnpp \ --enable-nvdec \ --enable-nvenc \ --extra-cflags="-I%{_includedir}/cuda" \ %endif %ifarch x86_64 - --enable-libsvtav1 \ --enable-libsvtvp9 \ --enable-libvmaf \ --enable-libvpl \ -# --enable-libxevd \ -# --enable-libxeve \ %endif %make_build V=1 diff --git a/anda/multimedia/ffmpeg/update.rhai b/anda/multimedia/ffmpeg/update.rhai index c7c838cb2d..fc26ed0f50 100644 --- a/anda/multimedia/ffmpeg/update.rhai +++ b/anda/multimedia/ffmpeg/update.rhai @@ -1,11 +1,17 @@ import "andax/bump_extras.rhai" as bump; -import "andax/spec.rhai" as spec; -rpm.version(find(`ffmpeg-([\d.]+?)\.tar\.xz`, get("https://ffmpeg.org/download.html"), 1)); +// rpm.version(find(`ffmpeg-([\d.]+?)\.tar\.xz`, get("https://ffmpeg.org/download.html"), 1)); +rpm.version(bump::bodhi("ffmpeg", bump::as_bodhi_ver(labels.branch))); +open_file("anda/multimedia/ffmpeg/VERSION_x264.txt", "w").write(bump::madoguchi("x264", labels.branch)); open_file("anda/multimedia/ffmpeg/VERSION_x265.txt", "w").write(bump::madoguchi("x265", labels.branch)); open_file("anda/multimedia/ffmpeg/VERSION_tesseract.txt", "w").write(bump::bodhi("tesseract", bump::as_bodhi_ver(labels.branch))); +open_file("anda/multimedia/ffmpeg/VERSION_libbluray.txt", "w").write(bump::bodhi("libbluray", bump::as_bodhi_ver(labels.branch))); open_file("anda/multimedia/ffmpeg/VERSION_vvenc.txt", "w").write(bump::madoguchi("vvenc-libs", labels.branch)); +open_file("anda/multimedia/ffmpeg/VERSION_xeve.txt", "w").write(bump::madoguchi("xeve", labels.branch)); +open_file("anda/multimedia/ffmpeg/VERSION_xevd.txt", "w").write(bump::madoguchi("xevd", labels.branch)); +open_file("anda/multimedia/ffmpeg/VERSION_LCEVCdec.txt", "w").write(bump::madoguchi("LCEVCdec", labels.branch)); +open_file("anda/multimedia/ffmpeg/VERSION_svt-av1.txt", "w").write(bump::bodhi("svt-av1", labels.branch)); let dir = sub(`/[^/]+$`, "", __script_path); if sh("[[ `git status " + dir + " --porcelain` ]] && exit 1 || exit 0", #{}).ctx.rc == 1 { diff --git a/anda/multimedia/gstreamer1/gstreamer1-plugin-icamerasrc/gstreamer1-plugin-icamerasrc.spec b/anda/multimedia/gstreamer1/gstreamer1-plugin-icamerasrc/gstreamer1-plugin-icamerasrc.spec index 9999dfa92c..14bf43da0e 100644 --- a/anda/multimedia/gstreamer1/gstreamer1-plugin-icamerasrc/gstreamer1-plugin-icamerasrc.spec +++ b/anda/multimedia/gstreamer1/gstreamer1-plugin-icamerasrc/gstreamer1-plugin-icamerasrc.spec @@ -1,5 +1,5 @@ -%global fulldate 2025-03-25 -%global commit 7f90219b0cdc00b263415e09eb8c3687daf06ab9 +%global fulldate 2025-09-26 +%global commit 4fb31db76b618aae72184c59314b839dedb42689 %global commit_date %(echo %{fulldate} | sed 's/-//g') %global shortcommit %(c=%{commit}; echo ${c:0:7}) diff --git a/anda/multimedia/gstreamer1/gstreamer1-plugin-libav/VERSION_ffmpeg.txt b/anda/multimedia/gstreamer1/gstreamer1-plugin-libav/VERSION_ffmpeg.txt new file mode 100644 index 0000000000..ce0abf6b25 --- /dev/null +++ b/anda/multimedia/gstreamer1/gstreamer1-plugin-libav/VERSION_ffmpeg.txt @@ -0,0 +1 @@ +7.1.2 diff --git a/anda/multimedia/gstreamer1/gstreamer1-plugin-libav/anda.hcl b/anda/multimedia/gstreamer1/gstreamer1-plugin-libav/anda.hcl index f6d20ce1a6..09af9d505f 100644 --- a/anda/multimedia/gstreamer1/gstreamer1-plugin-libav/anda.hcl +++ b/anda/multimedia/gstreamer1/gstreamer1-plugin-libav/anda.hcl @@ -2,9 +2,10 @@ project pkg { arches = ["x86_64", "aarch64", "i386"] rpm { spec = "gstreamer1-plugin-libav.spec" + extra_repos = ["https://repos.fyralabs.com/terrarawhide-multimedia"] } labels { - subrepo = "extras" + subrepo = "multimedia" mock = 1 updbranch = 1 } diff --git a/anda/multimedia/gstreamer1/gstreamer1-plugin-libav/gstreamer1-plugin-libav.spec b/anda/multimedia/gstreamer1/gstreamer1-plugin-libav/gstreamer1-plugin-libav.spec index eb1beafa03..81473aa5c2 100644 --- a/anda/multimedia/gstreamer1/gstreamer1-plugin-libav/gstreamer1-plugin-libav.spec +++ b/anda/multimedia/gstreamer1/gstreamer1-plugin-libav/gstreamer1-plugin-libav.spec @@ -1,5 +1,5 @@ Name: gstreamer1-plugin-libav -Version: 1.26.5 +Version: 1.26.8 Release: 1%?dist Epoch: 1 Summary: GStreamer Libav plugin diff --git a/anda/multimedia/gstreamer1/gstreamer1-plugin-libav/update.rhai b/anda/multimedia/gstreamer1/gstreamer1-plugin-libav/update.rhai index 9c2d9f5b38..9d40b68c04 100644 --- a/anda/multimedia/gstreamer1/gstreamer1-plugin-libav/update.rhai +++ b/anda/multimedia/gstreamer1/gstreamer1-plugin-libav/update.rhai @@ -2,4 +2,12 @@ import "andax/bump_extras.rhai" as bump; let vr = bump::bodhi_vr("gstreamer1-plugin-libav", bump::as_bodhi_ver(labels.branch)); rpm.version(vr[1]); -rpm.release(vr[2]); +//rpm.release(vr[2]); + +open_file("anda/multimedia/gstreamer1/gstreamer1-plugin-libav/VERSION_ffmpeg.txt", "w").write(bump::madoguchi("ffmpeg", labels.branch)); + +let dir = sub(`/[^/]+$`, "", __script_path); +if sh("[[ `git status " + dir + " --porcelain` ]] && exit 1 || exit 0", #{}).ctx.rc == 1 { + let rel = spec::get_release(rpm).parse_int(); + rpm.release(rel + 1); +} diff --git a/anda/multimedia/gstreamer1/gstreamer1-plugins-bad/LCEVCdec_VERSION.txt b/anda/multimedia/gstreamer1/gstreamer1-plugins-bad/LCEVCdec_VERSION.txt new file mode 100644 index 0000000000..c4e41f9459 --- /dev/null +++ b/anda/multimedia/gstreamer1/gstreamer1-plugins-bad/LCEVCdec_VERSION.txt @@ -0,0 +1 @@ +4.0.3 diff --git a/anda/multimedia/gstreamer1/gstreamer1-plugins-bad/anda.hcl b/anda/multimedia/gstreamer1/gstreamer1-plugins-bad/anda.hcl index e031b556e2..ac46457247 100644 --- a/anda/multimedia/gstreamer1/gstreamer1-plugins-bad/anda.hcl +++ b/anda/multimedia/gstreamer1/gstreamer1-plugins-bad/anda.hcl @@ -2,9 +2,10 @@ project pkg { arches = ["x86_64", "aarch64", "i386"] rpm { spec = "gstreamer1-plugins-bad.spec" + extra_repos = ["https://repos.fyralabs.com/terrarawhide-multimedia"] } labels { - subrepo = "extras" + subrepo = "multimedia" mock = 1 updbranch = 1 } diff --git a/anda/multimedia/gstreamer1/gstreamer1-plugins-bad/gstreamer1-plugins-bad-lcevcdec4.patch b/anda/multimedia/gstreamer1/gstreamer1-plugins-bad/gstreamer1-plugins-bad-lcevcdec4.patch new file mode 100644 index 0000000000..a04f9c1c9c --- /dev/null +++ b/anda/multimedia/gstreamer1/gstreamer1-plugins-bad/gstreamer1-plugins-bad-lcevcdec4.patch @@ -0,0 +1,35 @@ +diff --git a/ext/lcevcdecoder/gstlcevcdec.c b/ext/lcevcdecoder/gstlcevcdec.c +index a1af5b11390b..3c9cb2ffdf2b 100644 +--- a/ext/lcevcdecoder/gstlcevcdec.c ++++ b/ext/lcevcdecoder/gstlcevcdec.c +@@ -539,7 +539,7 @@ send_enhancement_data (GstLcevcDec * lcevc, GstBuffer * input_buffer) + } + + if (LCEVC_SendDecoderEnhancementData (lcevc->decoder_handle, +- input_buffer->pts, TRUE, enhancement_info.data, ++ input_buffer->pts, enhancement_info.data, + enhancement_info.size) != LCEVC_Success) { + GST_INFO_OBJECT (lcevc, + "Could not send input buffer %" GST_TIME_FORMAT +@@ -581,7 +581,7 @@ send_base_picture (GstLcevcDec * lcevc, GstBuffer * input_buffer) + goto done; + } + +- if (LCEVC_SendDecoderBase (lcevc->decoder_handle, input_buffer->pts, TRUE, ++ if (LCEVC_SendDecoderBase (lcevc->decoder_handle, input_buffer->pts, + picture_handle, 1000000, NULL) != LCEVC_Success) { + GST_ELEMENT_ERROR (lcevc, STREAM, DECODE, (NULL), + ("Could not send input buffer %" GST_TIME_FORMAT " base picture", +diff --git a/ext/lcevcdecoder/meson.build b/ext/lcevcdecoder/meson.build +index ecc5be034a95..ead6b9e9a361 100644 +--- a/ext/lcevcdecoder/meson.build ++++ b/ext/lcevcdecoder/meson.build +@@ -26,7 +26,7 @@ plugin_sources += { + 'lcevcdecoder': pathsep.join(doc_sources) + } + +-lcevc_dec_dep = dependency ('lcevc_dec', required: get_option('lcevcdecoder')) ++lcevc_dec_dep = dependency ('lcevc_dec', version: '>= 4', required: get_option('lcevcdecoder')) + + if lcevc_dec_dep.found() + gstlcevcdecoder = library('gstlcevcdecoder', diff --git a/anda/multimedia/gstreamer1/gstreamer1-plugins-bad/gstreamer1-plugins-bad.spec b/anda/multimedia/gstreamer1/gstreamer1-plugins-bad/gstreamer1-plugins-bad.spec index 936fb5d6b9..518e7d91ca 100644 --- a/anda/multimedia/gstreamer1/gstreamer1-plugins-bad/gstreamer1-plugins-bad.spec +++ b/anda/multimedia/gstreamer1/gstreamer1-plugins-bad/gstreamer1-plugins-bad.spec @@ -3,7 +3,7 @@ %global majorminor 1.0 Name: gstreamer1-plugins-bad -Version: 1.26.5 +Version: 1.26.8 Release: 1%?dist Epoch: 2 Summary: GStreamer streaming media framework "bad" plugins @@ -13,6 +13,10 @@ URL: http://gstreamer.freedesktop.org/ Source0: https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-%{version}.tar.xz Source1: gstreamer-bad.metainfo.xml +# Add support for LCEVCdec 4. Based off: +# https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/1b041d8114b4de8341926fe1ae62a1d64781970d +Patch0: %{name}-lcevcdec4.patch + # Requires Provides with and without _isa defined due to package dependencies Obsoletes: %{name}-free < %{?epoch}:%{version}-%{release} Provides: %{name}-free = %{?epoch}:%{version}-%{release} @@ -20,7 +24,7 @@ Provides: %{name}-free%{?_isa} = %{?epoch}:%{version}-%{release} Obsoletes: %{name}-free-extras < %{?epoch}:%{version}-%{release} Provides: %{name}-free-extras = %{?epoch}:%{version}-%{release} Provides: %{name}-free-extras%{?_isa} = %{?epoch}:%{version}-%{release} -#Obsoletes: %{name}-freeworld < %{?epoch}:%{version}-%{release} +Obsoletes: %{name}-freeworld < %{?epoch}:%{version}-%{release} Provides: %{name}-freeworld = %{?epoch}:%{version}-%{release} Provides: %{name}-freeworld%{?_isa} = %{?epoch}:%{version}-%{release} Obsoletes: %{name}-nonfree < %{?epoch}:%{version}-%{release} @@ -60,7 +64,9 @@ BuildRequires: gobject-introspection-devel >= 1.31.1 BuildRequires: gsm-devel BuildRequires: ladspa-devel BuildRequires: libatomic +%if 0%{?fedora} < 44 BuildRequires: libcdaudio-devel +%endif BuildRequires: libmicrodns-devel #BuildRequires: libmpcdec-devel - Old API BuildRequires: mesa-libGL-devel diff --git a/anda/multimedia/gstreamer1/gstreamer1-plugins-bad/update.rhai b/anda/multimedia/gstreamer1/gstreamer1-plugins-bad/update.rhai index 5265f08cc8..1b74c7e7a2 100644 --- a/anda/multimedia/gstreamer1/gstreamer1-plugins-bad/update.rhai +++ b/anda/multimedia/gstreamer1/gstreamer1-plugins-bad/update.rhai @@ -7,7 +7,13 @@ let branch = bump::as_bodhi_ver(labels.branch); let vr = bump::bodhi_vr("gstreamer1-plugins-bad-free", branch); rpm.version(vr[1]); -rpm.release(vr[2]); +//rpm.release(vr[2]); -let opencv_ver = bump::bodhi("opencv", bodhi_branch); -open_file("anda/multimedia/gstreamer1/gstreamer1-plugins-bad/OPENCV_VERSION.txt", "w").write(opencv_ver); +open_file("anda/multimedia/gstreamer1/gstreamer1-plugins-bad/OPENCV_VERSION.txt", "w").write(bump::bodhi("opencv", bodhi_branch)); +open_file("anda/multimedia/gstreamer1/gstreamer1-plugins-bad/LCEVCdec_VERSION.txt", "w").write(bump::madoguchi("LCEVCdec", labels.branch)); + +let dir = sub(`/[^/]+$`, "", __script_path); +if sh("[[ `git status " + dir + " --porcelain` ]] && exit 1 || exit 0", #{}).ctx.rc == 1 { + let rel = spec::get_release(rpm).parse_int(); + rpm.release(rel + 1); +} diff --git a/anda/multimedia/gstreamer1/gstreamer1-plugins-ugly/VERSION_x264.txt b/anda/multimedia/gstreamer1/gstreamer1-plugins-ugly/VERSION_x264.txt new file mode 100644 index 0000000000..cd71b913c4 --- /dev/null +++ b/anda/multimedia/gstreamer1/gstreamer1-plugins-ugly/VERSION_x264.txt @@ -0,0 +1 @@ +0.165 diff --git a/anda/multimedia/gstreamer1/gstreamer1-plugins-ugly/VERSION_x265.txt b/anda/multimedia/gstreamer1/gstreamer1-plugins-ugly/VERSION_x265.txt new file mode 100644 index 0000000000..8a36cd142b --- /dev/null +++ b/anda/multimedia/gstreamer1/gstreamer1-plugins-ugly/VERSION_x265.txt @@ -0,0 +1 @@ +4.1 \ No newline at end of file diff --git a/anda/multimedia/gstreamer1/gstreamer1-plugins-ugly/anda.hcl b/anda/multimedia/gstreamer1/gstreamer1-plugins-ugly/anda.hcl index 5ef2660d6e..13c5400c37 100644 --- a/anda/multimedia/gstreamer1/gstreamer1-plugins-ugly/anda.hcl +++ b/anda/multimedia/gstreamer1/gstreamer1-plugins-ugly/anda.hcl @@ -2,9 +2,10 @@ project pkg { arches = ["x86_64", "aarch64", "i386"] rpm { spec = "gstreamer1-plugins-ugly.spec" + extra_repos = ["https://repos.fyralabs.com/terrarawhide-multimedia"] } labels { - subrepo = "extras" + subrepo = "multimedia" mock = 1 updbranch = 1 } diff --git a/anda/multimedia/gstreamer1/gstreamer1-plugins-ugly/gstreamer1-plugins-ugly.spec b/anda/multimedia/gstreamer1/gstreamer1-plugins-ugly/gstreamer1-plugins-ugly.spec index 031b13bb72..2796d732b1 100644 --- a/anda/multimedia/gstreamer1/gstreamer1-plugins-ugly/gstreamer1-plugins-ugly.spec +++ b/anda/multimedia/gstreamer1/gstreamer1-plugins-ugly/gstreamer1-plugins-ugly.spec @@ -1,7 +1,7 @@ %global majorminor 1.0 Name: gstreamer1-plugins-ugly -Version: 1.26.5 +Version: 1.26.8 Release: 1%?dist Epoch: 1 Summary: GStreamer streaming media framework "ugly" plugins diff --git a/anda/multimedia/gstreamer1/gstreamer1-plugins-ugly/update.rhai b/anda/multimedia/gstreamer1/gstreamer1-plugins-ugly/update.rhai index 5f9560fa48..fb008b2138 100644 --- a/anda/multimedia/gstreamer1/gstreamer1-plugins-ugly/update.rhai +++ b/anda/multimedia/gstreamer1/gstreamer1-plugins-ugly/update.rhai @@ -2,4 +2,13 @@ import "andax/bump_extras.rhai" as bump; let vr = bump::bodhi_vr("gstreamer1-plugins-ugly-free", bump::as_bodhi_ver(labels.branch)); rpm.version(vr[1]); -rpm.release(vr[2]); +//rpm.release(vr[2]); + +open_file("anda/multimedia/gstreamer1/gstreamer1-plugins-ugly/VERSION_x264.txt", "w").write(bump::madoguchi("x264", labels.branch)); +open_file("anda/multimedia/gstreamer1/gstreamer1-plugins-ugly/VERSION_x265.txt", "w").write(bump::madoguchi("x265", labels.branch)); + +let dir = sub(`/[^/]+$`, "", __script_path); +if sh("[[ `git status " + dir + " --porcelain` ]] && exit 1 || exit 0", #{}).ctx.rc == 1 { + let rel = spec::get_release(rpm).parse_int(); + rpm.release(rel + 1); +} diff --git a/anda/multimedia/gstreamer1/gstreamer1-vaapi/PLUGINS_BAD_release.txt b/anda/multimedia/gstreamer1/gstreamer1-vaapi/PLUGINS_BAD_release.txt new file mode 100644 index 0000000000..8213d34942 --- /dev/null +++ b/anda/multimedia/gstreamer1/gstreamer1-vaapi/PLUGINS_BAD_release.txt @@ -0,0 +1 @@ +1.fcrawhide diff --git a/anda/multimedia/gstreamer1/gstreamer1-vaapi/anda.hcl b/anda/multimedia/gstreamer1/gstreamer1-vaapi/anda.hcl index b3231c6cd4..3bc32c70d9 100644 --- a/anda/multimedia/gstreamer1/gstreamer1-vaapi/anda.hcl +++ b/anda/multimedia/gstreamer1/gstreamer1-vaapi/anda.hcl @@ -2,9 +2,10 @@ project pkg { arches = ["x86_64", "aarch64", "i386"] rpm { spec = "gstreamer1-vaapi.spec" + extra_repos = ["https://repos.fyralabs.com/terrarawhide-multimedia"] } labels { - subrepo = "extras" + subrepo = "multimedia" mock = 1 updbranch = 1 } diff --git a/anda/multimedia/gstreamer1/gstreamer1-vaapi/gstreamer1-vaapi.spec b/anda/multimedia/gstreamer1/gstreamer1-vaapi/gstreamer1-vaapi.spec index d36a5078ff..840eee1aad 100644 --- a/anda/multimedia/gstreamer1/gstreamer1-vaapi/gstreamer1-vaapi.spec +++ b/anda/multimedia/gstreamer1/gstreamer1-vaapi/gstreamer1-vaapi.spec @@ -1,5 +1,5 @@ Name: gstreamer1-plugin-vaapi -Version: 1.26.5 +Version: 1.26.8 Release: 1%?dist Epoch: 1 Summary: GStreamer VA-API integration diff --git a/anda/multimedia/gstreamer1/gstreamer1-vaapi/update.rhai b/anda/multimedia/gstreamer1/gstreamer1-vaapi/update.rhai index b852f108b2..18c6503a05 100644 --- a/anda/multimedia/gstreamer1/gstreamer1-vaapi/update.rhai +++ b/anda/multimedia/gstreamer1/gstreamer1-vaapi/update.rhai @@ -2,4 +2,12 @@ import "andax/bump_extras.rhai" as bump; let vr = bump::bodhi_vr("gstreamer1-vaapi", bump::as_bodhi_ver(labels.branch)); rpm.version(vr[1]); -rpm.release(vr[2]); +//rpm.release(vr[2]); + +open_file("anda/multimedia/gstreamer1/gstreamer1-vaapi/PLUGINS_BAD_release.txt", "w").write(bump::madoguchi_json("gstreamer1-plugins-bad", labels.branch).rel); + +let dir = sub(`/[^/]+$`, "", __script_path); +if sh("[[ `git status " + dir + " --porcelain` ]] && exit 1 || exit 0", #{}).ctx.rc == 1 { + let rel = spec::get_release(rpm).parse_int(); + rpm.release(rel + 1); +} diff --git a/anda/multimedia/kvazaar/anda.hcl b/anda/multimedia/kvazaar/anda.hcl index 9001334d1b..e791705fc8 100644 --- a/anda/multimedia/kvazaar/anda.hcl +++ b/anda/multimedia/kvazaar/anda.hcl @@ -4,6 +4,6 @@ project pkg { spec = "kvazaar.spec" } labels { - mock =1 + mock = 1 } } diff --git a/anda/multimedia/lcevcdec/LCEVCdec.spec b/anda/multimedia/lcevcdec/LCEVCdec.spec index e36f9be71f..f0ef271b46 100644 --- a/anda/multimedia/lcevcdec/LCEVCdec.spec +++ b/anda/multimedia/lcevcdec/LCEVCdec.spec @@ -9,8 +9,8 @@ %bcond docs 0 Name: LCEVCdec -Version: 4.0.1 -Release: 1%?dist +Version: 4.0.3 +Release: 1%{?dist} Summary: MPEG-5 LCEVC Decoder License: BSD-3-Clause-Clear URL: https://docs.v-nova.com/v-nova/lcevc/lcevc-sdk-overview @@ -23,6 +23,7 @@ BuildRequires: cmake(nlohmann_json) BuildRequires: cmake(range-v3) BuildRequires: gcc-c++ BuildRequires: git +BuildRequires: gmock-devel BuildRequires: pkgconfig(libavcodec) BuildRequires: pkgconfig(libavdevice) BuildRequires: pkgconfig(libxxhash) @@ -63,7 +64,7 @@ Summary: Development files for %{name} Provides: %{name}-static = %{version}-%{release} Obsoletes: %{name}-static < %{version}-%{release} Requires: %{name}%{?_isa} = %{version}-%{release} -Requires: plutovg-devel%{?_isa} +Requires: plutovg-devel%{?_isa} %description devel The %{name}-devel package contains libraries and header files for @@ -117,7 +118,6 @@ rm -fr %{buildroot}%{_docdir} %{buildroot}%{_prefix}/licenses python3 src/func_tests/run_tests.py %endif - %files %license LICENSE.md COPYING %doc README.md @@ -128,8 +128,6 @@ python3 src/func_tests/run_tests.py %{_libdir}/liblcevc_dec_pipeline_legacy.so.1 %files devel -%license LICENSE.md COPYING -%doc README.md %{_includedir}/LCEVC %{_libdir}/liblcevc_dec_api.so %{_libdir}/liblcevc_dec_legacy.so diff --git a/anda/multimedia/lcevcdec/VERSION_ffmpeg.txt b/anda/multimedia/lcevcdec/VERSION_ffmpeg.txt new file mode 100644 index 0000000000..a8a1887568 --- /dev/null +++ b/anda/multimedia/lcevcdec/VERSION_ffmpeg.txt @@ -0,0 +1 @@ +7.1.2 diff --git a/anda/multimedia/lcevcdec/anda.hcl b/anda/multimedia/lcevcdec/anda.hcl index fc1d38512a..e97d525175 100644 --- a/anda/multimedia/lcevcdec/anda.hcl +++ b/anda/multimedia/lcevcdec/anda.hcl @@ -2,8 +2,10 @@ project pkg { arches = ["x86_64", "aarch64", "i386"] rpm { spec = "LCEVCdec.spec" + extra_repos = ["https://repos.fyralabs.com/terrarawhide-multimedia"] } labels { mock = 1 + subrepo = "multimedia" } } diff --git a/anda/multimedia/lcevcdec/update.rhai b/anda/multimedia/lcevcdec/update.rhai index 63fabc1bd9..1945f0ccc5 100644 --- a/anda/multimedia/lcevcdec/update.rhai +++ b/anda/multimedia/lcevcdec/update.rhai @@ -1 +1,9 @@ rpm.version(gh("v-novaltd/LCEVCdec")); + +open_file("anda/multimedia/lcevcdec/VERSION_ffmpeg.txt", "w").write(bump::madoguchi("ffmpeg", labels.branch)); + +let dir = sub(`/[^/]+$`, "", __script_path); +if sh("[[ `git status " + dir + " --porcelain` ]] && exit 1 || exit 0", #{}).ctx.rc == 1 { + let rel = spec::get_release(rpm).parse_int(); + rpm.release(rel + 1); +} diff --git a/anda/multimedia/mjpegtools/anda.hcl b/anda/multimedia/mjpegtools/anda.hcl index 4660da642e..e851cc292a 100644 --- a/anda/multimedia/mjpegtools/anda.hcl +++ b/anda/multimedia/mjpegtools/anda.hcl @@ -5,5 +5,6 @@ project pkg { } labels { mock = 1 + subrepo = "multimedia" } } diff --git a/anda/multimedia/openutau/anda.hcl b/anda/multimedia/openutau/anda.hcl new file mode 100644 index 0000000000..873448f2c7 --- /dev/null +++ b/anda/multimedia/openutau/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "openutau.bin.spec" + } +} diff --git a/anda/multimedia/openutau/openutau.bin.spec b/anda/multimedia/openutau/openutau.bin.spec new file mode 100644 index 0000000000..ed52191c91 --- /dev/null +++ b/anda/multimedia/openutau/openutau.bin.spec @@ -0,0 +1,49 @@ +%global ver build/0.1.529 + +Name: openutau.bin +Version: %(echo %ver | sed -E 's@^build/@@') +Release: 1%?dist +Summary: Open singing synthesis platform / Open source UTAU successor +License: MIT +URL: http://www.openutau.com +Source0: https://github.com/stakira/OpenUtau/releases/download/%ver/OpenUtau-linux-x64.tar.gz +Source1: https://github.com/stakira/OpenUtau/raw/refs/tags/%ver/LICENSE.txt +Source2: https://github.com/stakira/OpenUtau/raw/refs/tags/%ver/OpenUtau/Assets/open-utau.ico +Packager: madonuko +Provides: openutau = %evr +Provides: OpenUtau = %evr + +%description +OpenUtau is a free, open-source editor made for the UTAU community. + +%prep +cp %{S:1} %{S:2} . +cat< OpenUtau.desktop +[Desktop Entry] +Version=1.0 +Terminal=false +Type=Application +Name=OpenUtau +Categories=Audio;AudioVideoEditing; +Comment=%summary +Keywords=utau;synthesis; +Exec=%_bindir/OpenUtau +Icon=%_iconsdir/hicolor/apps/open-utau.ico +EOF + +%install +mkdir -p %buildroot%_bindir +ln -s %_datadir/openutau/OpenUtau %buildroot%_bindir/OpenUtau +install -Dm644 OpenUtau.desktop -t %buildroot%_datadir/applications +install -Dpm644 open-utau.ico -t %buildroot%_iconsdir/hicolor/apps + +mkdir -p %buildroot%_datadir/openutau +cd %buildroot%_datadir/openutau +tar tf %{S:0} + +%files +%license LICENSE.txt +%_bindir/OpenUtau +%_datadir/openutau +%_datadir/applications/OpenUtau.desktop +%_iconsdir/hicolor/apps/open-utau.ico diff --git a/anda/multimedia/openutau/update.rhai b/anda/multimedia/openutau/update.rhai new file mode 100644 index 0000000000..e8924c3302 --- /dev/null +++ b/anda/multimedia/openutau/update.rhai @@ -0,0 +1,9 @@ +let v = gh("stakira/OpenUtau"); +let url = `OpenUtau-linux-x64.tar.gz` + +if get(`https://github.com/stakira/OpenUtau/releases/expanded_assets/${v}`).contains(url) { + rpm.global("ver", v); +} else { + print(`openutau: ${v} (waiting for bundle)`); + terminate(); +} diff --git a/anda/multimedia/rtaudio/rtaudio-nightly.spec b/anda/multimedia/rtaudio/rtaudio-nightly.spec index a9b3766782..bd6ba80676 100644 --- a/anda/multimedia/rtaudio/rtaudio-nightly.spec +++ b/anda/multimedia/rtaudio/rtaudio-nightly.spec @@ -1,8 +1,8 @@ #? https://src.fedoraproject.org/rpms/rtaudio/blob/db1aa72863ccbfd480e22c2f7aefb41ebb8e2360/f/rtaudio.spec -%global commit 40e0d8140f14acd8552d2dc4f42dcc853274a12c +%global commit ab7daaae763c8e0dcea611a9e190fa46d95b2639 %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global commit_date 20250430 -%global ver 6.0.1 +%global commit_date 20251103 +%global ver .0.1 Name: rtaudio-nightly Version: %{ver}^%{commit_date}.git.%{shortcommit} diff --git a/anda/multimedia/tdf/anda.hcl b/anda/multimedia/tdf/anda.hcl new file mode 100644 index 0000000000..2b10d0f596 --- /dev/null +++ b/anda/multimedia/tdf/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "tdf.spec" + } +} diff --git a/anda/multimedia/tdf/tdf.spec b/anda/multimedia/tdf/tdf.spec new file mode 100644 index 0000000000..3ed3249916 --- /dev/null +++ b/anda/multimedia/tdf/tdf.spec @@ -0,0 +1,42 @@ +Name: tdf +Version: 0.4.3 +Release: 1%?dist +Summary: A tui-based PDF viewer +URL: https://github.com/itsjunetime/tdf +Source0: %url/archive/refs/tags/v%{version}.tar.gz +License: AGPL-3.0 +BuildRequires: cargo anda-srpm-macros cargo-rpm-macros mold fontconfig-devel mupdf glib2 libgcc clang python + +Packager: Its-J + +%description +A terminal-based PDF viewer. +Designed to be performant, very responsive, and work well with even very large PDFs. Built with ratatui. + +%prep +%git_clone +%cargo_prep_online +pushd ratatui-image +%cargo_prep_online +popd +pushd ratatui +%cargo_prep_online +popd + +%build +%cargo_build + +%install +install -Dm755 target/rpm/tdf %{buildroot}%{_bindir}/tdf +%cargo_license_summary_online +%{cargo_license_online -a} > LICENSE.dependencies + +%files +%doc README.md +%license LICENSE +%license LICENSE.dependencies +%{_bindir}/tdf + +%changelog +* Wed Oct 22 2025 Its-J +- Intial Commit diff --git a/anda/multimedia/tdf/update.rhai b/anda/multimedia/tdf/update.rhai new file mode 100644 index 0000000000..6263c340a0 --- /dev/null +++ b/anda/multimedia/tdf/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("itsjunetime/tdf")); diff --git a/anda/multimedia/uavs3d/anda.hcl b/anda/multimedia/uavs3d/anda.hcl index e74e92e8fc..6edbc27184 100644 --- a/anda/multimedia/uavs3d/anda.hcl +++ b/anda/multimedia/uavs3d/anda.hcl @@ -4,6 +4,7 @@ project pkg { spec = "uavs3d.spec" } labels { - mock =1 + mock = 1 + subrepo = "multimedia" } } diff --git a/anda/multimedia/vgmstream/anda.hcl b/anda/multimedia/vgmstream/anda.hcl new file mode 100644 index 0000000000..7b5a699086 --- /dev/null +++ b/anda/multimedia/vgmstream/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "vgmstream.spec" + } +} diff --git a/anda/multimedia/vgmstream/update.rhai b/anda/multimedia/vgmstream/update.rhai new file mode 100644 index 0000000000..ed091a8d06 --- /dev/null +++ b/anda/multimedia/vgmstream/update.rhai @@ -0,0 +1,5 @@ +rpm.global("commit", gh_commit("vgmstream/vgmstream")); +if rpm.changed() { + rpm.global("commit_date", date()); + rpm.release(); +} diff --git a/anda/multimedia/vgmstream/vgmstream.spec b/anda/multimedia/vgmstream/vgmstream.spec new file mode 100644 index 0000000000..d08c306eae --- /dev/null +++ b/anda/multimedia/vgmstream/vgmstream.spec @@ -0,0 +1,55 @@ +%global commit 86ef4c768977271616c309964c6f600389030e5f +%global shortcommit %{sub %{commit} 1 7} +%global commit_date 20251109 + +Name: vgmstream +Version: 0~%{commit_date}git.%shortcommit +Release: 1%?dist +Summary: A library for playback of various streamed audio formats used in video games +License: ISC +URL: https://vgmstream.org +Packager: madonuko +Source0: https://github.com/vgmstream/vgmstream/archive/%commit.tar.gz +# https://github.com/vgmstream/vgmstream/blob/master/make-build-cmake.sh +BuildRequires: gcc gcc-c++ cmake git-core +BuildRequires: pkgconfig(libmpg123) pkgconfig(vorbis) pkgconfig(speex) +BuildRequires: pkgconfig(libavformat) pkgconfig(libavcodec) pkgconfig(libavutil) pkgconfig(libswresample) +BuildRequires: yasm pkgconfig(opus) pkgconfig(ao) pkgconfig(audacious) + +%description +%summary. + +%package devel +%pkg_devel_files +%license COPYING +%_libdir/cmake/vgmstream + +%package -n audacious-plugins-vgmstream +Summary: Audacious input plugin for vgmstream +Supplements: (vgmstream and audacious) +%description -n audacious-plugins-vgmstream +Audacious input plugin for vgmstream. +For more information, see the main vgmstream package. + +%files -n audacious-plugins-vgmstream +%license COPYING +%_libdir/audacious/Input/vgmstream.so + +%prep +%autosetup -n %name-%commit + +sed 's/VERSION=""/VERSION="%shortcommit"/g' -i version-make.sh + +%build +# https://github.com/vgmstream/vgmstream/issues/1780 +%cmake -DCMAKE_BUILD_TYPE=Release -DUSE_G719=0 %["%_arch" == "x86_64" ? "" : "-DUSE_CELT=0"] +%cmake_build + +%install +%cmake_install + +%files +%doc README.md SECURITY.md doc/*.md +%license COPYING +%_bindir/vgmstream-cli +%_bindir/vgmstream123 diff --git a/anda/multimedia/vvdec/anda.hcl b/anda/multimedia/vvdec/anda.hcl new file mode 100644 index 0000000000..0da4bcd8a0 --- /dev/null +++ b/anda/multimedia/vvdec/anda.hcl @@ -0,0 +1,10 @@ +project pkg { + arches = ["x86_64", "aarch64", "i386"] + rpm { + spec = "vvdec.spec" + } + labels { + mock = 1 + subrepo = "multimedia" + } +} diff --git a/anda/multimedia/vvdec/update.rhai b/anda/multimedia/vvdec/update.rhai new file mode 100644 index 0000000000..2f96574d33 --- /dev/null +++ b/anda/multimedia/vvdec/update.rhai @@ -0,0 +1,4 @@ +let v = gh_tag("fraunhoferhhi/vvdec"); +if `[\d.]+-rc\d+`.find_all(v).len == 0 { + rpm.version(v); +} diff --git a/anda/multimedia/vvdec/vvdec.spec b/anda/multimedia/vvdec/vvdec.spec new file mode 100644 index 0000000000..459913f641 --- /dev/null +++ b/anda/multimedia/vvdec/vvdec.spec @@ -0,0 +1,62 @@ +Name: vvdec +Version: 3.1.0 +Release: 1%?dist +Summary: VVdeC, the Fraunhofer Versatile Video Decoder +License: BSD-3-Clause +URL: https://github.com/fraunhoferhhi/%{name} + +Source0: %{url}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz + +BuildRequires: cmake +BuildRequires: gcc-c++ + +%description +VVdeC, the Fraunhofer Versatile Video Decoder, is a fast software H.266/VVC +decoder implementation supporting all features of the VVC Main10 profile. + +%package libs +Summary: VVdeC, the Fraunhofer Versatile Video Encoder %{name} libraries + +%description libs +The %{name}-devel package contains libraries and header files for developing +applications that use %{name}. This package contains the shared libraries. + +%package devel +Summary: Development files for %{name} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%prep +%autosetup -p1 + +%build +%cmake \ +%ifarch %{ix86} + -DVVDEC_ENABLE_X86_SIMD=OFF \ +%endif + -DVVDEC_INSTALL_VVDECAPP=ON +%cmake_build + +%install +%cmake_install + +%files +%{_bindir}/%{name}app + +%files libs +%license LICENSE.txt +%doc README.md +%{_libdir}/lib%{name}.so.3 +%{_libdir}/lib%{name}.so.%{version} + +%files devel +%{_includedir}/%{name}/ +%{_libdir}/cmake/%{name}/%{name}*.cmake +%{_libdir}/lib%{name}.so +%{_libdir}/pkgconfig/lib%{name}.pc + +%changelog +%autochangelog diff --git a/anda/multimedia/vvenc/anda.hcl b/anda/multimedia/vvenc/anda.hcl index ccbfbd4469..ea5a6e16d2 100644 --- a/anda/multimedia/vvenc/anda.hcl +++ b/anda/multimedia/vvenc/anda.hcl @@ -5,5 +5,6 @@ project pkg { } labels { mock = 1 + subrepo = "multimedia" } } diff --git a/anda/multimedia/vvenc/vvenc.spec b/anda/multimedia/vvenc/vvenc.spec index 40d7399898..f6313ffc02 100644 --- a/anda/multimedia/vvenc/vvenc.spec +++ b/anda/multimedia/vvenc/vvenc.spec @@ -1,17 +1,13 @@ -%global build_cxxflags %{__build_flags_lang_cxx} %{?_distro_extra_cxxflags} -Wno-error=maybe-uninitialized -Wno-error=uninitialized - Name: vvenc Version: 1.13.1 -Release: 3%{?dist} +Release: 4%{?dist} Summary: VVenC, the Fraunhofer Versatile Video Encoder License: BSD-3-Clause URL: https://github.com/fraunhoferhhi/%{name} Source0: %{url}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz -# Fixes for i386/ARM32 builds Patch0: %{url}/commit/ebce395254d9d7be7dc00cec7b49c7ed1d9eebec.patch -Patch1: %{url}/commit/bfd55ee783bfe30fc73f6f314b066b84bb1e5b60.patch -Patch2: %{url}/commit/982fcaac22488415899ae6c6ef7977a728a88e94.patch +Patch1: %{url}/commit/982fcaac22488415899ae6c6ef7977a728a88e94.patch BuildRequires: cmake BuildRequires: gcc-c++ @@ -49,6 +45,7 @@ developing applications that use %{name}. %autosetup -p1 %build +export CXXFLAGS="%{optflags} -Wno-error=maybe-uninitialized -Wno-error=uninitialized" %cmake \ -DCMAKE_SKIP_INSTALL_RPATH=OFF \ -DVVENC_INSTALL_FULLFEATURE_APP=ON diff --git a/anda/multimedia/x264-bootstrap/anda.hcl b/anda/multimedia/x264-bootstrap/anda.hcl index 46255b7fbc..6e923054a4 100644 --- a/anda/multimedia/x264-bootstrap/anda.hcl +++ b/anda/multimedia/x264-bootstrap/anda.hcl @@ -2,8 +2,10 @@ project pkg { arches = ["x86_64", "aarch64", "i386"] rpm { spec = "x264-bootstrap.spec" + extra_repos = ["https://repos.fyralabs.com/terrarawhide-multimedia"] } labels { mock = 1 + subrepo = "multimedia" } } diff --git a/anda/multimedia/x264/anda.hcl b/anda/multimedia/x264/anda.hcl index e4736bc5c9..2068b1ab39 100644 --- a/anda/multimedia/x264/anda.hcl +++ b/anda/multimedia/x264/anda.hcl @@ -2,8 +2,10 @@ project pkg { arches = ["x86_64", "aarch64", "i386"] rpm { spec = "x264.spec" + extra_repos = ["https://repos.fyralabs.com/terrarawhide-multimedia"] } labels { mock = 1 + subrepo = "multimedia" } } diff --git a/anda/multimedia/x264/x264.spec b/anda/multimedia/x264/x264.spec index db33845824..7452b2496c 100644 --- a/anda/multimedia/x264/x264.spec +++ b/anda/multimedia/x264/x264.spec @@ -1,10 +1,10 @@ -%global fusionsrc_commit 91b92ea4846982e5d9eb58744fda70f75d0faf8d +%global fusionsrc_commit d8f53f1f25ce2c778582e7cff5790ae24408db2e # globals for x264-0.164-20231001git31e19f92.tar.bz2 -%global api 164 +%global api 165 %global gitdate 20231001 -%global gitversion 31e19f92 -%global gitlongver 31e19f92f00c7003fa115047ce50978bc98c3a0d +%global gitlongver b35605ace3ddf7c1a5d67a2eb553f034aef41d55 +%global gitversion %{sub %gitlongver 1 8} %global snapshot %{gitdate}git%{gitversion} %global gver .%{gitdate}git%{gitversion} @@ -47,8 +47,6 @@ Source2: https://raw.githubusercontent.com/rpmfusion/x264/%fusionsrc_commit/vers Patch0: https://raw.githubusercontent.com/rpmfusion/x264/%fusionsrc_commit/x264-nover.patch # add 10b suffix to high bit depth build Patch1: https://raw.githubusercontent.com/rpmfusion/x264/%fusionsrc_commit/x264-10b.patch -# fix assignment from incompatible pointer type errors -Patch2: https://raw.githubusercontent.com/rpmfusion/x264/%fusionsrc_commit/x264-altivec-incompatible-pointer-type.patch Patch11: https://raw.githubusercontent.com/rpmfusion/x264/%fusionsrc_commit/x264-opencl.patch BuildRequires: anda-srpm-macros git-core @@ -125,7 +123,6 @@ sh version.sh > ./version.h cp %{SOURCE2} . %patch -P0 -p1 -b .nover %patch -P1 -p1 -b .10b -%patch -P2 -p1 -b .ptr %patch -P11 -p1 -b .opencl popd diff --git a/anda/multimedia/x265/anda.hcl b/anda/multimedia/x265/anda.hcl index 7bb0dd68ca..e0ae6f27d9 100644 --- a/anda/multimedia/x265/anda.hcl +++ b/anda/multimedia/x265/anda.hcl @@ -2,8 +2,10 @@ project pkg { arches = ["x86_64", "aarch64", "i386"] rpm { spec = "x265.spec" + extra_repos = ["https://repos.fyralabs.com/terrarawhide-multimedia"] } labels { - mock =1 + mock = 1 + subrepo = "multimedia" } } diff --git a/anda/multimedia/xevd/anda.hcl b/anda/multimedia/xevd/anda.hcl new file mode 100644 index 0000000000..e2404bcf99 --- /dev/null +++ b/anda/multimedia/xevd/anda.hcl @@ -0,0 +1,11 @@ +project pkg { + arches = ["x86_64", "aarch64", "i386"] + rpm { + spec = "xevd.spec" + extra_repos = ["https://repos.fyralabs.com/terrarawhide-multimedia"] + } + labels { + mock = 1 + subrepo = "multimedia" + } +} diff --git a/anda/multimedia/xevd/update.rhai b/anda/multimedia/xevd/update.rhai new file mode 100644 index 0000000000..39960f4ad2 --- /dev/null +++ b/anda/multimedia/xevd/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("mpeg5/xevd")); diff --git a/anda/multimedia/xevd/xevd-fix-build-on-non-x86.patch b/anda/multimedia/xevd/xevd-fix-build-on-non-x86.patch new file mode 100644 index 0000000000..cb3cdd7fc7 --- /dev/null +++ b/anda/multimedia/xevd/xevd-fix-build-on-non-x86.patch @@ -0,0 +1,187 @@ +diff -Naur xevd-0.5.0.old/CMakeLists.txt xevd-0.5.0/CMakeLists.txt +--- xevd-0.5.0.old/CMakeLists.txt 2025-09-08 17:02:37.227878934 +0200 ++++ xevd-0.5.0/CMakeLists.txt 2025-09-08 17:03:59.232785118 +0200 +@@ -105,8 +105,7 @@ + set(OPT_DBG "-DNDEBUG") # disable assert + endif() + +- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -${OPT_LV} ${OPT_DBG} -fomit-frame-pointer -Wall -Wno-unused-function -Wno-unused-but-set-variable -Wno-unused-variable -Wno-attributes -Werror -Wno-unknown-pragmas -Wno-stringop-overflow -std=c99") +- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-pointer-sign -pthread -Wno-pointer-to-int-cast -Wno-maybe-uninitialized") ++ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -${OPT_LV} ${OPT_DBG} -Wall -pthread -std=c99") + set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lm") + endif() + +@@ -134,6 +133,18 @@ + COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) + endif() + ++# To build for arm provide in command line: -DARM=TRUE ++if(NOT ARM) ++ set(ARM "FALSE") ++else() ++ add_definitions(-DARM=1) ++ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flax-vector-conversions") ++ if(NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin") ++ set(CMAKE_EXE_LINKER_FLAGS "-static") ++ endif() ++endif() ++message("ARM=${ARM}") ++ + ######################################## + # add CPack to project + ######################################## +diff -Naur xevd-0.5.0.old/src_base/CMakeLists.txt xevd-0.5.0/src_base/CMakeLists.txt +--- xevd-0.5.0.old/src_base/CMakeLists.txt 2025-09-08 17:02:37.230545819 +0200 ++++ xevd-0.5.0/src_base/CMakeLists.txt 2025-09-08 17:02:46.122035862 +0200 +@@ -15,14 +15,26 @@ + + include(GenerateExportHeader) + include_directories("${CMAKE_BINARY_DIR}") ++ ++set(ARM "FALSE") ++message("SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}") ++if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(arm|aarch)") ++ set(ARM "TRUE") ++elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86|ia64|i386|i686)") ++ set(X86 "TRUE") ++endif() ++ + if("${ARM}" STREQUAL "TRUE") + add_library( ${LIB_NAME_BASE} STATIC ${LIB_API_SRC} ${XEVD_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_NEON_SRC} ${LIB_NEON_INC} ) + add_library( ${LIB_NAME_BASE}_dynamic SHARED ${LIB_API_SRC} ${XEVD_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_NEON_SRC} ${LIB_NEON_INC} ) +-else() ++elseif(X86) + add_library( ${LIB_NAME_BASE} STATIC ${LIB_API_SRC} ${XEVD_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_SSE_SRC} ${LIB_SSE_INC} + ${LIB_AVX_SRC} ${LIB_AVX_INC} ) + add_library( ${LIB_NAME_BASE}_dynamic SHARED ${LIB_API_SRC} ${XEVD_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_SSE_SRC} ${LIB_SSE_INC} + ${LIB_AVX_SRC} ${LIB_AVX_INC} ) ++else() ++ add_library( ${LIB_NAME_BASE} STATIC ${LIB_API_SRC} ${XEVD_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ) ++ add_library( ${LIB_NAME_BASE}_dynamic SHARED ${LIB_API_SRC} ${XEVD_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ) + endif() + + set_target_properties(${LIB_NAME_BASE}_dynamic PROPERTIES VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} SOVERSION ${LIB_SOVERSION}) +@@ -56,8 +68,10 @@ + + if("${ARM}" STREQUAL "TRUE") + include_directories( ${LIB_NAME_BASE} PUBLIC . .. ../inc ./neon) +-else() ++elseif(X86) + include_directories( ${LIB_NAME_BASE} PUBLIC . .. ../inc ./sse ./avx) ++else() ++ include_directories( ${LIB_NAME_BASE} PUBLIC . .. ../inc) + endif() + + +@@ -86,7 +100,11 @@ + ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/import/lib) + elseif( UNIX OR MINGW ) + +- if("${ARM}" STREQUAL "FALSE") ++ if(ARM) ++ add_definitions(-DARM=1) ++ set_property( SOURCE ${NEON} APPEND PROPERTY COMPILE_FLAGS "-flax-vector-conversions") ++ elseif(X86) ++ add_definitions(-DX86=1) + set_property( SOURCE ${SSE} APPEND PROPERTY COMPILE_FLAGS "-msse4.1" ) + set_property( SOURCE ${AVX} APPEND PROPERTY COMPILE_FLAGS " -mavx2" ) + endif() +diff -Naur xevd-0.5.0.old/src_base/xevd_def.h xevd-0.5.0/src_base/xevd_def.h +--- xevd-0.5.0.old/src_base/xevd_def.h 2025-09-08 17:02:37.232878979 +0200 ++++ xevd-0.5.0/src_base/xevd_def.h 2025-09-08 17:02:46.122168051 +0200 +@@ -1498,7 +1498,7 @@ + #include "xevd_mc.h" + #include "xevd_eco.h" + #include "xevd_df.h" +-#ifndef ARM ++#if defined(X86) + #include "xevd_mc_sse.h" + #include "xevd_mc_avx.h" + #include "xevd_itdq_sse.h" +@@ -1506,7 +1506,7 @@ + #include "xevd_recon_avx.h" + #include "xevd_recon_sse.h" + #include "xevd_dbk_sse.h" +-#else ++#elif defined(ARM) + #include "xevd_mc_neon.h" + #include "xevd_itdq_neon.h" + #include "xevd_recon_neon.h" +diff -Naur xevd-0.5.0.old/src_base/xevd_port.h xevd-0.5.0/src_base/xevd_port.h +--- xevd-0.5.0.old/src_base/xevd_port.h 2025-09-08 17:02:37.234878997 +0200 ++++ xevd-0.5.0/src_base/xevd_port.h 2025-09-08 17:02:46.122306953 +0200 +@@ -137,10 +137,10 @@ + #define xevd_assert_gv(x,r,v,g) \ + {if(!(x)){assert(x); (r)=(v); goto g;}} + +-#ifndef ARM ++#if defined(X86) + #define X86_SSE 1 + #define ARM_NEON 0 +-#else ++#elif defined(ARM) + #define X86_SSE 0 + #define ARM_NEON 1 + #endif +diff -Naur xevd-0.5.0.old/src_main/CMakeLists.txt xevd-0.5.0/src_main/CMakeLists.txt +--- xevd-0.5.0.old/src_main/CMakeLists.txt 2025-09-08 17:02:37.235879006 +0200 ++++ xevd-0.5.0/src_main/CMakeLists.txt 2025-09-08 17:02:46.122402222 +0200 +@@ -27,16 +27,27 @@ + include(GenerateExportHeader) + include_directories("${CMAKE_BINARY_DIR}") + ++set(ARM "FALSE") ++message("SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}") ++if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(arm|aarch)") ++ set(ARM "TRUE") ++elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86|ia64|i386|i686)") ++ set(X86 "TRUE") ++endif() ++ + if("${ARM}" STREQUAL "TRUE") + add_library( ${LIB_NAME} STATIC ${LIB_API_MAIN_SRC} ${XEVD_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_MAIN_SRC} ${LIB_MAIN_INC} + ${LIB_NEON_SRC} ${LIB_NEON_INC} ${LIB_MAIN_NEON_SRC} ${LIB_MAIN_NEON_INC} ) + add_library( ${LIB_NAME}_dynamic SHARED ${LIB_API_MAIN_SRC} ${XEVD_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_MAIN_SRC} ${LIB_MAIN_INC} + ${LIB_NEON_SRC} ${LIB_NEON_INC} ${LIB_MAIN_NEON_SRC} ${LIB_MAIN_NEON_INC} ) +-else() ++elseif(X86) + add_library( ${LIB_NAME} STATIC ${LIB_API_MAIN_SRC} ${XEVD_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_MAIN_SRC} ${LIB_MAIN_INC} + ${LIB_SSE_SRC} ${LIB_SSE_INC} ${LIB_MAIN_SSE_SRC} ${LIB_MAIN_SSE_INC} ${LIB_AVX_SRC} ${LIB_AVX_INC} ${LIB_MAIN_AVX_SRC} ${LIB_MAIN_AVX_INC} ) + add_library( ${LIB_NAME}_dynamic SHARED ${LIB_API_MAIN_SRC} ${XEVD_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_MAIN_SRC} ${LIB_MAIN_INC} + ${LIB_SSE_SRC} ${LIB_SSE_INC} ${LIB_MAIN_SSE_SRC} ${LIB_MAIN_SSE_INC} ${LIB_AVX_SRC} ${LIB_AVX_INC} ${LIB_MAIN_AVX_SRC} ${LIB_MAIN_AVX_INC} ) ++else() ++ add_library( ${LIB_NAME} STATIC ${LIB_API_MAIN_SRC} ${XEVD_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_MAIN_SRC} ${LIB_MAIN_INC} ) ++ add_library( ${LIB_NAME}_dynamic SHARED ${LIB_API_MAIN_SRC} ${XEVD_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_MAIN_SRC} ${LIB_MAIN_INC} ) + endif() + + set_target_properties(${LIB_NAME}_dynamic PROPERTIES VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} SOVERSION ${LIB_SOVERSION}) +@@ -79,12 +90,15 @@ + + if("${ARM}" STREQUAL "TRUE") + include_directories( ${LIB_NAME} PUBLIC . .. ../inc ./neon ../src_base ../src_base/neon) +-else() ++elseif(X86) + include_directories( ${LIB_NAME} PUBLIC . .. ../inc ./sse ./avx ../src_base ../src_base/sse ../src_base/avx) ++else() ++ include_directories( ${LIB_NAME} PUBLIC . .. ../inc ../src_base) + endif() + + set( SSE ${BASE_INC_FILES} ${LIB_SSE_SRC} ${LIB_MAIN_SSE_SRC}) + set( AVX ${LIB_AVX_SRC} ${LIB_MAIN_AVX_SRC}) ++set( NEON ${LIB_NEON_SRC} ${LIB_MAIN_NEON_SRC}) + + set_target_properties(${LIB_NAME}_dynamic PROPERTIES OUTPUT_NAME ${LIB_NAME}) + +@@ -101,7 +115,11 @@ + set_target_properties(${LIB_NAME}_dynamic PROPERTIES FOLDER lib + ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/import/lib) + elseif( UNIX OR MINGW ) +- if("${ARM}" STREQUAL "FALSE") ++ if(ARM) ++ add_definitions(-DARM=1) ++ set_property( SOURCE ${NEON} APPEND PROPERTY COMPILE_FLAGS "-flax-vector-conversions") ++ elseif(X86) ++ add_definitions(-DX86=1) + set_property( SOURCE ${SSE} APPEND PROPERTY COMPILE_FLAGS "-msse4.1" ) + set_property( SOURCE ${AVX} APPEND PROPERTY COMPILE_FLAGS " -mavx2" ) + endif() diff --git a/anda/multimedia/xevd/xevd-link-libm.patch b/anda/multimedia/xevd/xevd-link-libm.patch new file mode 100644 index 0000000000..d2d5cfc94b --- /dev/null +++ b/anda/multimedia/xevd/xevd-link-libm.patch @@ -0,0 +1,22 @@ +diff -Naur xevd-0.5.0.old/src_base/CMakeLists.txt xevd-0.5.0/src_base/CMakeLists.txt +--- xevd-0.5.0.old/src_base/CMakeLists.txt 2025-09-09 14:06:37.254614333 +0200 ++++ xevd-0.5.0/src_base/CMakeLists.txt 2025-09-09 14:06:55.110436755 +0200 +@@ -92,6 +92,7 @@ + endif() + set_target_properties(${LIB_NAME_BASE}_dynamic PROPERTIES FOLDER lib + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) ++ target_link_libraries(${LIB_NAME_BASE}_dynamic m) + target_compile_definitions( ${LIB_NAME_BASE} PUBLIC ANY LINUX ) + target_link_libraries(${LIB_NAME_BASE} m) + endif() +diff -Naur xevd-0.5.0.old/src_main/CMakeLists.txt xevd-0.5.0/src_main/CMakeLists.txt +--- xevd-0.5.0.old/src_main/CMakeLists.txt 2025-09-09 14:06:37.255946413 +0200 ++++ xevd-0.5.0/src_main/CMakeLists.txt 2025-09-09 14:07:56.126832044 +0200 +@@ -107,6 +107,7 @@ + endif() + + set_target_properties(${LIB_NAME}_dynamic PROPERTIES FOLDER lib LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) ++ target_link_libraries(${LIB_NAME}_dynamic m) + target_compile_definitions( ${LIB_NAME} PUBLIC ANY LINUX ) + target_link_libraries(${LIB_NAME} m) + endif() diff --git a/anda/multimedia/xevd/xevd.spec b/anda/multimedia/xevd/xevd.spec new file mode 100644 index 0000000000..99c2c96c06 --- /dev/null +++ b/anda/multimedia/xevd/xevd.spec @@ -0,0 +1,76 @@ +Name: xevd +Epoch: 1 +Version: 0.5.0 +Release: 1%{?dist} +Summary: eXtra-fast Essential Video Decoder, MPEG-5 EVC (Essential Video Coding) +License: BSD-3-Clause +URL: https://github.com/mpeg5/xevd + +Source0: %{url}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz +Patch0: %{name}-fix-build-on-non-x86.patch +# https://github.com/mpeg5/xevd/commit/4087f635624cf4ee6ebe3f9ea165ff939b32117f +# But also for src_main: +Patch1: xevd-link-libm.patch + +BuildRequires: cmake +BuildRequires: gcc + +%description +The eXtra-fast Essential Video Decoder (XEVD) is an opensource and fast MPEG-5 +EVC decoder. + +MPEG-5 Essential Video Coding (EVC) is a video compression standard of ISO/IEC +Moving Picture Experts Group (MPEG). The main goal of the EVC is to provide a +significantly improved compression capability over existing video coding +standards with timely publication of terms. The EVC defines two profiles, +including "Baseline Profile" and "Main Profile". The "Baseline profile" contains +only technologies that are older than 20 years or otherwise freely available for +use in the standard. In addition, the "Main profile" adds a small number of +additional tools, each of which can be either cleanly disabled or switched to +the corresponding baseline tool on an individual basis. + +%package libs +Summary: MPEG-5 EVC encoder %{name} libraries + +%description libs +The %{name}-devel package contains libraries and header files for developing +applications that use %{name}. This package contains the shared libraries. + +%package devel +Summary: Development files for %{name} +Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%prep +%autosetup -p1 +echo "v%{version}" > version.txt + +%build +%cmake -DSET_PROF=MAIN +%cmake_build + +%install +%cmake_install + +# Static library +rm -fr %{buildroot}%{_libdir}/%{name} + +%files +%{_bindir}/%{name}_app + +%files libs +%license COPYING +%doc README.md +%{_libdir}/lib%{name}.so.0 +%{_libdir}/lib%{name}.so.0.5 + +%files devel +%{_includedir}/%{name}/ +%{_libdir}/lib%{name}.so +%{_libdir}/pkgconfig/%{name}.pc + +%changelog +%autochangelog diff --git a/anda/multimedia/xeve/anda.hcl b/anda/multimedia/xeve/anda.hcl new file mode 100644 index 0000000000..6fa2b1befc --- /dev/null +++ b/anda/multimedia/xeve/anda.hcl @@ -0,0 +1,11 @@ +project pkg { + arches = ["x86_64", "aarch64", "i386"] + rpm { + spec = "xeve.spec" + extra_repos = ["https://repos.fyralabs.com/terrarawhide-multimedia"] + } + labels { + mock = 1 + subrepo = "multimedia" + } +} diff --git a/anda/multimedia/xeve/update.rhai b/anda/multimedia/xeve/update.rhai new file mode 100644 index 0000000000..712c708706 --- /dev/null +++ b/anda/multimedia/xeve/update.rhai @@ -0,0 +1 @@ +rpm.version(gh_tag("mpeg5/xeve")); diff --git a/anda/multimedia/xeve/xeve-fix-build-i386.patch b/anda/multimedia/xeve/xeve-fix-build-i386.patch new file mode 100644 index 0000000000..53963a2cb4 --- /dev/null +++ b/anda/multimedia/xeve/xeve-fix-build-i386.patch @@ -0,0 +1,12 @@ +diff -Naur xeve-0.5.1.old/app/xeve_app_util.h xeve-0.5.1/app/xeve_app_util.h +--- xeve-0.5.1.old/app/xeve_app_util.h 2025-09-09 14:10:13.815762327 +0200 ++++ xeve-0.5.1/app/xeve_app_util.h 2025-11-04 13:43:37.496372293 +0100 +@@ -73,7 +73,7 @@ + len = (pre == NULL)? 0: (int)strlen(pre); + if(len > 0) + { +- sprintf(str + 3, " %s ", pre); ++ snprintf(str + 3, sizeof(str) - 3, " %.73s ", pre); + len = (int)strlen(str); + } + diff --git a/anda/multimedia/xeve/xeve-fix-build-on-non-x86.patch b/anda/multimedia/xeve/xeve-fix-build-on-non-x86.patch new file mode 100644 index 0000000000..f40c1c225c --- /dev/null +++ b/anda/multimedia/xeve/xeve-fix-build-on-non-x86.patch @@ -0,0 +1,186 @@ +diff -Naur xeve-0.5.1.old/src_base/CMakeLists.txt xeve-0.5.1/src_base/CMakeLists.txt +--- xeve-0.5.1.old/src_base/CMakeLists.txt 2024-06-24 09:49:08.000000000 +0200 ++++ xeve-0.5.1/src_base/CMakeLists.txt 2025-09-08 20:52:14.500329611 +0200 +@@ -17,15 +17,25 @@ + include(GenerateExportHeader) + include_directories("${CMAKE_BINARY_DIR}") + ++set(ARM "FALSE") ++message("SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}") ++if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(arm|aarch)") ++ set(ARM "TRUE") ++elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86|ia64|i386|i686)") ++ set(X86 "TRUE") ++endif() + + if("${ARM}" STREQUAL "TRUE") + add_library( ${LIB_NAME_BASE} STATIC ${LIB_API_SRC} ${XEVE_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_NEON_INC} ${LIB_NEON_SRC}) + add_library( ${LIB_NAME_BASE}_dynamic SHARED ${LIB_API_SRC} ${XEVE_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_NEON_INC} ${LIB_NEON_SRC}) +-else() ++elseif(X86) + add_library( ${LIB_NAME_BASE} STATIC ${LIB_API_SRC} ${XEVE_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_SSE_SRC} ${LIB_SSE_INC} + ${LIB_AVX_SRC} ${LIB_AVX_INC} ) + add_library( ${LIB_NAME_BASE}_dynamic SHARED ${LIB_API_SRC} ${XEVE_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_SSE_SRC} ${LIB_SSE_INC} + ${LIB_AVX_SRC} ${LIB_AVX_INC} ) ++else() ++ add_library( ${LIB_NAME_BASE} STATIC ${LIB_API_SRC} ${XEVE_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ) ++ add_library( ${LIB_NAME_BASE}_dynamic SHARED ${LIB_API_SRC} ${XEVE_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ) + endif() + + set_target_properties(${LIB_NAME_BASE}_dynamic PROPERTIES VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} SOVERSION ${LIB_SOVERSION}) +@@ -59,8 +69,10 @@ + + if("${ARM}" STREQUAL "TRUE") + include_directories( ${LIB_NAME_BASE} PUBLIC . .. ../inc ./neon) +-else() ++elseif(X86) + include_directories( ${LIB_NAME_BASE} PUBLIC . .. ../inc ./sse ./avx) ++else() ++ include_directories( ${LIB_NAME_BASE} PUBLIC . .. ../inc) + endif() + + set( SSE ${BASE_INC_FILES} ${LIB_SSE_SRC}) +@@ -83,7 +95,11 @@ + ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/import/lib) + + elseif( UNIX OR MINGW ) +- if("${ARM}" STREQUAL "FALSE") ++ if(ARM) ++ add_definitions(-DARM=1) ++ set_property( SOURCE ${NEON} APPEND PROPERTY COMPILE_FLAGS "-flax-vector-conversions -Wno-cpp") ++ elseif(X86) ++ add_definitions(-DX86=1) + set_property( SOURCE ${SSE} APPEND PROPERTY COMPILE_FLAGS "-msse4.1" ) + set_property( SOURCE ${AVX} APPEND PROPERTY COMPILE_FLAGS " -mavx2" ) + endif() +diff -Naur xeve-0.5.1.old/src_base/xeve_def.h xeve-0.5.1/src_base/xeve_def.h +--- xeve-0.5.1.old/src_base/xeve_def.h 2024-06-24 09:49:08.000000000 +0200 ++++ xeve-0.5.1/src_base/xeve_def.h 2025-09-08 20:52:14.500467050 +0200 +@@ -1514,10 +1514,10 @@ + #include "xeve_ipred.h" + #include "xeve_picman.h" + #include "xeve_mc.h" +-#ifndef ARM ++#if defined(X86) + #include "xeve_mc_sse.h" + #include "xeve_mc_avx.h" +-#else ++#elif defined(ARM) + #include "xeve_mc_neon.h" + #endif + #include "xeve_type.h" +diff -Naur xeve-0.5.1.old/src_base/xeve_port.h xeve-0.5.1/src_base/xeve_port.h +--- xeve-0.5.1.old/src_base/xeve_port.h 2024-06-24 09:49:08.000000000 +0200 ++++ xeve-0.5.1/src_base/xeve_port.h 2025-09-08 20:52:14.500592747 +0200 +@@ -138,10 +138,10 @@ + #define xeve_assert_gv(x,r,v,g) \ + {if(!(x)){assert(x); (r)=(v); goto g;}} + +-#ifndef ARM ++#if defined(X86) + #define X86_SSE 1 + #define ARM_NEON 0 +-#else ++#elif defined (ARM) + #define X86_SSE 0 + #define ARM_NEON 1 + #endif +diff -Naur xeve-0.5.1.old/src_base/xeve_type.h xeve-0.5.1/src_base/xeve_type.h +--- xeve-0.5.1.old/src_base/xeve_type.h 2024-06-24 09:49:08.000000000 +0200 ++++ xeve-0.5.1/src_base/xeve_type.h 2025-09-08 20:52:14.500672457 +0200 +@@ -34,10 +34,10 @@ + #include "xeve_def.h" + #include "xeve_bsw.h" + #include "xeve_sad.h" +-#ifndef ARM ++#if defined(X86) + #include "xeve_sad_sse.h" + #include "xeve_sad_avx.h" +-#else ++#elif defined(ARM) + #include "xeve_sad_neon.h" + #endif + +@@ -1016,11 +1016,11 @@ + #include "xeve_tbl.h" + #include "xeve_itdq.h" + +-#ifndef ARM ++#if defined(X86) + #include "xeve_itdq_sse.h" + #include "xeve_itdq_avx.h" + #include "xeve_tq_avx.h" +-#else ++#elif defined(ARM) + #include "xeve_itdq_neon.h" + #include "xeve_tq_neon.h" + #endif +diff -Naur xeve-0.5.1.old/src_main/CMakeLists.txt xeve-0.5.1/src_main/CMakeLists.txt +--- xeve-0.5.1.old/src_main/CMakeLists.txt 2024-06-24 09:49:08.000000000 +0200 ++++ xeve-0.5.1/src_main/CMakeLists.txt 2025-09-08 20:52:14.500798415 +0200 +@@ -19,18 +19,31 @@ + file (GLOB LIB_MAIN_SSE_INC "./sse/xevem_*.h" ) + file (GLOB LIB_MAIN_AVX_SRC "./avx/xevem_*.c") + file (GLOB LIB_MAIN_AVX_INC "./avx/xevem_*.h" ) ++file (GLOB LIB_MAIN_NEON_SRC "./neon/xevem_*.c") ++file (GLOB LIB_MAIN_NEON_INC "./neon/xevem_*.h" ) + + include(GenerateExportHeader) + include_directories("${CMAKE_BINARY_DIR}") + ++set(ARM "FALSE") ++message("SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}") ++if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(arm|aarch)") ++ set(ARM "TRUE") ++elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86|ia64|i386|i686)") ++ set(X86 "TRUE") ++endif() ++ + if("${ARM}" STREQUAL "TRUE") +- add_library( ${LIB_NAME} STATIC ${LIB_API_MAIN_SRC} ${ETM_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_MAIN_SRC} ${LIB_MAIN_INC} ${LIB_NEON_INC} ${LIB_NEON_SRC} ) +- add_library( ${LIB_NAME}_dynamic SHARED ${LIB_API_MAIN_SRC} ${ETM_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_MAIN_SRC} ${LIB_MAIN_INC} ${LIB_NEON_INC} ${LIB_NEON_SRC}) +-else() ++ add_library( ${LIB_NAME} STATIC ${LIB_API_MAIN_SRC} ${ETM_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_MAIN_SRC} ${LIB_MAIN_INC} ${LIB_NEON_SRC} ${LIB_NEON_INC} ) ++ add_library( ${LIB_NAME}_dynamic SHARED ${LIB_API_MAIN_SRC} ${ETM_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_MAIN_SRC} ${LIB_MAIN_INC} ${LIB_NEON_SRC} ${LIB_NEON_INC}) ++elseif(X86) + add_library( ${LIB_NAME} STATIC ${LIB_API_MAIN_SRC} ${ETM_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_MAIN_SRC} ${LIB_MAIN_INC} + ${LIB_SSE_SRC} ${LIB_SSE_INC} ${LIB_MAIN_SSE_SRC} ${LIB_MAIN_SSE_INC} ${LIB_AVX_SRC} ${LIB_AVX_INC} ${LIB_MAIN_AVX_SRC} ${LIB_MAIN_AVX_INC} ) + add_library( ${LIB_NAME}_dynamic SHARED ${LIB_API_MAIN_SRC} ${ETM_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_MAIN_SRC} ${LIB_MAIN_INC} +- ${LIB_SSE_SRC} ${LIB_SSE_INC} ${LIB_MAIN_SSE_SRC} ${LIB_MAIN_SSE_INC} ${LIB_AVX_SRC} ${LIB_AVX_SRC} ${LIB_AVX_INC} ${LIB_MAIN_AVX_SRC} ${LIB_MAIN_AVX_INC}) ++ ${LIB_SSE_SRC} ${LIB_SSE_INC} ${LIB_MAIN_SSE_SRC} ${LIB_MAIN_SSE_INC} ${LIB_AVX_SRC} ${LIB_AVX_INC} ${LIB_MAIN_AVX_SRC} ${LIB_MAIN_AVX_INC}) ++else() ++ add_library( ${LIB_NAME} STATIC ${LIB_API_MAIN_SRC} ${ETM_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_MAIN_SRC} ${LIB_MAIN_INC} ) ++ add_library( ${LIB_NAME}_dynamic SHARED ${LIB_API_MAIN_SRC} ${ETM_INC} ${LIB_BASE_SRC} ${LIB_BASE_INC} ${LIB_MAIN_SRC} ${LIB_MAIN_INC} ) + endif() + + set_target_properties(${LIB_NAME}_dynamic PROPERTIES VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} SOVERSION ${LIB_SOVERSION}) +@@ -71,12 +84,15 @@ + + if("${ARM}" STREQUAL "TRUE") + include_directories( ${LIB_NAME} PUBLIC . .. ../inc ../src_base ../src_base/neon) +-else() ++elseif(X86) + include_directories( ${LIB_NAME} PUBLIC . .. ../inc ./sse ./avx ../src_base ../src_base/sse ../src_base/avx) ++else() ++ include_directories( ${LIB_NAME} PUBLIC . .. ../inc ../src_base) + endif() + + set( SSE ${BASE_INC_FILES} ${LIB_SSE_SRC} ${LIB_MAIN_SSE_SRC}) + set( AVX ${LIB_AVX_SRC} ${LIB_MAIN_AVX_SRC}) ++set( NEON ${LIB_NEON_SRC}) + + set_target_properties(${LIB_NAME}_dynamic PROPERTIES OUTPUT_NAME ${LIB_NAME}) + +@@ -94,7 +110,11 @@ + ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/import/lib) + + elseif( UNIX OR MINGW ) +- if("${ARM}" STREQUAL "FALSE") ++ if(ARM) ++ add_definitions(-DARM=1) ++ set_property( SOURCE ${NEON} APPEND PROPERTY COMPILE_FLAGS "-flax-vector-conversions -Wno-cpp") ++ elseif(X86) ++ add_definitions(-DX86=1) + set_property( SOURCE ${SSE} APPEND PROPERTY COMPILE_FLAGS "-msse4.1" ) + set_property( SOURCE ${AVX} APPEND PROPERTY COMPILE_FLAGS " -mavx2" ) + endif() diff --git a/anda/multimedia/xeve/xeve-link-libm.patch b/anda/multimedia/xeve/xeve-link-libm.patch new file mode 100644 index 0000000000..6c1d15950e --- /dev/null +++ b/anda/multimedia/xeve/xeve-link-libm.patch @@ -0,0 +1,23 @@ +diff -Naur xeve-0.5.1.old/src_base/CMakeLists.txt xeve-0.5.1/src_base/CMakeLists.txt +--- xeve-0.5.1.old/src_base/CMakeLists.txt 2025-09-09 14:10:13.817765661 +0200 ++++ xeve-0.5.1/src_base/CMakeLists.txt 2025-09-09 14:10:18.814666609 +0200 +@@ -89,6 +89,7 @@ + endif() + set_target_properties(${LIB_NAME_BASE}_dynamic PROPERTIES FOLDER lib + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) ++ target_link_libraries(${LIB_NAME_BASE}_dynamic m) + target_compile_definitions( ${LIB_NAME_BASE} PUBLIC ANY LINUX ) + target_link_libraries(${LIB_NAME_BASE} m) + endif() +diff -Naur xeve-0.5.1.old/src_main/CMakeLists.txt xeve-0.5.1/src_main/CMakeLists.txt +--- xeve-0.5.1.old/src_main/CMakeLists.txt 2025-09-09 14:10:13.828252642 +0200 ++++ xeve-0.5.1/src_main/CMakeLists.txt 2025-09-09 14:10:56.392703629 +0200 +@@ -100,7 +100,7 @@ + endif() + + set_target_properties(${LIB_NAME}_dynamic PROPERTIES FOLDER lib LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +- ++ target_link_libraries(${LIB_NAME}_dynamic m) + target_compile_definitions( ${LIB_NAME} PUBLIC ANY LINUX ) + target_link_libraries(${LIB_NAME} m) + endif() diff --git a/anda/multimedia/xeve/xeve.spec b/anda/multimedia/xeve/xeve.spec new file mode 100644 index 0000000000..dde80296dd --- /dev/null +++ b/anda/multimedia/xeve/xeve.spec @@ -0,0 +1,81 @@ +Name: xeve +Epoch: 1 +Version: 0.5.1 +Release: 1%?dist +Summary: eXtra-fast Essential Video Encoder, MPEG-5 EVC (Essential Video Coding) +License: BSD-3-Clause +URL: https://github.com/mpeg5/xeve + +Source0: %{url}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz +Patch0: xeve-fix-build-on-non-x86.patch +# https://github.com/mpeg5/xeve/commit/bc45faa2e8d22bf33b0d15c025662f2a8de61fbc +# But also for src_main: +Patch1: xeve-link-libm.patch +Patch2: xeve-fix-build-i386.patch + +BuildRequires: cmake +BuildRequires: gcc +%ifarch aarch64 +BuildRequires: sse2neon-devel +%endif + +%description +The eXtra-fast Essential Video Encoder (XEVE) is an opensource and fast MPEG-5 +EVC encoder. + +MPEG-5 Essential Video Coding (EVC) is a video compression standard of ISO/IEC +Moving Picture Experts Group (MPEG). The main goal of the EVC is to provide a +significantly improved compression capability over existing video coding +standards with timely publication of terms. The EVC defines two profiles, +including "Baseline Profile" and "Main Profile". The "Baseline profile" contains +only technologies that are older than 20 years or otherwise freely available for +use in the standard. In addition, the "Main profile" adds a small number of +additional tools, each of which can be either cleanly disabled or switched to +the corresponding baseline tool on an individual basis. + +%package libs +Summary: MPEG-5 EVC encoder %{name} libraries + +%description libs +The %{name}-devel package contains libraries and header files for developing +applications that use %{name}. This package contains the shared libraries. + +%package devel +Summary: Development files for %{name} +Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%prep +%autosetup -p1 +echo "v%{version}" > version.txt +rm src_base/neon/sse2neon.h + +%build +%cmake -DSET_PROF=MAIN +%cmake_build + +%install +%cmake_install + +# Static library +rm -fr %{buildroot}%{_libdir}/%{name} + +%files +%{_bindir}/%{name}_app + +%files libs +%license COPYING +%doc README.md +%{_libdir}/lib%{name}.so.0 +%{_libdir}/lib%{name}.so.0.5 + +%files devel +%{_includedir}/%{name}/ +%{_libdir}/lib%{name}.so +%{_libdir}/pkgconfig/%{name}.pc + +%changelog +%autochangelog diff --git a/anda/multimedia/yabridge/anda.hcl b/anda/multimedia/yabridge/anda.hcl new file mode 100644 index 0000000000..1e3f96c6b3 --- /dev/null +++ b/anda/multimedia/yabridge/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "yabridge.spec" + } +} diff --git a/anda/multimedia/yabridge/yabridge.spec b/anda/multimedia/yabridge/yabridge.spec new file mode 100644 index 0000000000..87e6c4432e --- /dev/null +++ b/anda/multimedia/yabridge/yabridge.spec @@ -0,0 +1,276 @@ +# Original credits to Patrick Laimbock for the original spec, +# this one is cleaned up because the the COPR version is messy as hell + +##trace + +# force single job compilation +%dnl %define _smp_mflags -j1 +%global cargo_install_lib 0 + +%undefine _hardened_build +%undefine _include_frame_pointers + +# target wine version +%global wineversion 9.21 +%global debug_package %{nil} +%global _lto_cflags %{nil} + +%global with_32bit 1 +%global vst3sdkversion 3.7.7_build_19-patched +%global vst3ver %(b=%{vst3sdkversion}; echo ${b:1:6}) + +%global gitdate 20250601 +%global commit 918d24a16e8eda9ac2eac692704770dfed96f6ee +%global shortcommit %(c=%{commit}; echo ${c:0:7}) + +%global version 5.1.1 +%global release 1 + +# set this to "1" if building a git/beta/rc release +%global beta_or_rc 0 + + +#============================================================================= +# general +#----------------------------------------------------------------------------- +Name: yabridge +Version: %{version} +%if %{beta_or_rc} +Release: 0.%{release}.%{gitdate}.git%{shortcommit}%{?dist} +%else +Release: %{release}%{?dist} +%endif +Summary: Yet Another VST bridge, run Windows VST2 plugins under Linux +License: GPLv3 +Packager: Cappy Ishihara +URL: https://github.com/robbert-vdh/yabridge +%if %{beta_or_rc} +Source0: https://github.com/robbert-vdh/yabridge/archive/{commit}/%{name}-%{version}-git%{shortcommit}.tar.gz +#Source0: https://github.com/robbert-vdh/yabridge/archive/yabridge-master.zip +%else +Source0: https://github.com/robbert-vdh/yabridge/archive/%{version}/%{name}-%{version}.tar.gz +%endif +# https://github.com/robbert-vdh/vst3sdk + +Source4: https://github.com/robbert-vdh/vst3sdk/archive/refs/tags/v%{vst3sdkversion}.tar.gz +#Source5: vst3sdk-meson.build +# + +BuildRequires: vim +BuildRequires: anda-srpm-macros +BuildRequires: cargo-rpm-macros +BuildRequires: uuid-devel +BuildRequires: cmake +BuildRequires: cargo +BuildRequires: mold +BuildRequires: clang-devel +BuildRequires: git-core +BuildRequires: meson >= 0.56 +BuildRequires: gcc +BuildRequires: gcc-c++ +#BuildRequires: asio-devel +BuildRequires: boost +BuildRequires: boost-devel +BuildRequires: boost-filesystem +BuildRequires: boost-system +BuildRequires: dbus-devel +BuildRequires: git-core +BuildRequires: glibc-devel +BuildRequires: libstdc++-devel +BuildRequires: libxcb-devel +BuildRequires: rust +BuildRequires: /usr/bin/winegcc +BuildRequires: (wine-devel or wine-staging-devel or wine-stable-devel or wine-dev-devel) +BuildRequires: xcb-util-wm-devel +%if %{with_32bit} +#BuildRequires: asio-devel(x86-32) +BuildRequires: boost(x86-32) +BuildRequires: boost-devel(x86-32) +BuildRequires: boost-filesystem(x86-32) +BuildRequires: boost-iostreams(x86-32) +BuildRequires: boost-system(x86-32) +BuildRequires: dbus-devel(x86-32) +BuildRequires: glibc-devel(x86-32) +BuildRequires: libstdc++-devel(x86-32) +BuildRequires: libxcb-devel(x86-32) +# We need shell32 and ole32, for some reason terra wine just doens't have it +%dnl BuildRequires: (wine-devel(x86-32) or wine-staging-devel(x86-32) or wine-stable-devel(x86-32) or wine-dev-devel(x86-32)) +BuildRequires: wine-devel(x86-32) +BuildRequires: /usr/bin/winegcc +BuildRequires: xcb-util-wm-devel +BuildRequires: xcb-util-wm-devel(x86-32) +%endif + +ExclusiveArch: x86_64 + +Requires: boost +Requires: boost-filesystem +Requires: boost-system +Requires: libxcb +Requires: libXau +Requires: python3 + +%if %{with_32bit} +Requires: glibc(x86-32) +Requires: libgcc(x86-32) +Requires: libstdc++(x86-32) +Requires: libxcb(x86-32) +Requires: libXau(x86-32) +%endif + +%description +Yet Another way to use Windows VST plugins on Linux. Yabridge seamlessly +supports running both 64-bit Windows VST2 plugins as well as 32-bit Windows +VST2 plugins in a 64-bit Linux VST host. This project aims to be as +transparent as possible to achieve the best possible plugin compatibility +while also staying easy to debug and maintain. + + +#============================================================================= +# prep +#----------------------------------------------------------------------------- +%prep +%if %{beta_or_rc} +%autosetup -p1 -n %{name} +%else +%autosetup -p1 -n %{name}-%{version} +%endif + +pushd subprojects/ +tar -xvf %{SOURCE4} +#mv vst3sdk-%{vst3sdkversion} vst3 +# vst3sdk +#rm -rf vst3/.git vst3/.gitmodules +#cp -av %%{SOURCE5} vst3/meson.build +popd + + +# rename migration README.md for easier inclusion in the package +mv -v tools/migration/README.md tools/migration/README-migration.md + + +%if %{beta_or_rc} +# sync yabridgectl version with yabridge version +sed -i -e's|^version.*$|version = "%{version}"|' tools/yabridgectl/Cargo.toml +%endif + +## change deprecated dialect option 'c++2a' to c++20 in meson.build +## see https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#Options-Controlling-C-Dialect +#sed -i -e's|c++2a|c++20|g' meson.build + +# hack: fix problem with detecting the wine version +#sed -i -e"s|wine_version = wine_version.stdout()|wine_version = '9.21'|" meson.build + + +#============================================================================= +# build +#----------------------------------------------------------------------------- +%build +export LDFLAGS="%{build_ldflags}" + +%ifarch x86_64 +%define bitbridge true +%else +%define bitbridge false +%endif + +export CC_LD=mold +export LD=mold + +%if %{with_32bit} +%meson --cross-file cross-wine.conf \ + -Dbitbridge=true --wrap-mode=default --unity=on --unity-size=1000 +%else +%meson --cross-file cross-wine.conf \ + -Dbitbridge=false --wrap-mode=default --unity=on --unity-size=1000 +%endif + +%meson_build + +pushd tools/yabridgectl +%cargo_prep_online +%cargo_build +popd + + +#============================================================================= +# check +#----------------------------------------------------------------------------- +%check +# there are no tests +# ninja test -v -j1 -C build test + + +#============================================================================= +# install +#----------------------------------------------------------------------------- +%install +ls -R +# create directories +install -d -m0755 %{buildroot}%{_bindir} +install -d -m0755 %{buildroot}%{_libdir} + +# install apps and libs +install -D -m 0755 %{_vpath_builddir}/yabridge-host*.exe* %{buildroot}%{_bindir}/ +install -D -m 0755 %{_vpath_builddir}/libyabridge-chainloader-vst*.so %{buildroot}%{_libdir}/ +install -D -m 0755 %{_vpath_builddir}/libyabridge-chainloader-clap*.so %{buildroot}%{_libdir}/ +install -D -m 0755 %{_vpath_builddir}/libyabridge-vst*.so %{buildroot}%{_libdir}/ +install -D -m 0755 %{_vpath_builddir}/libyabridge-clap*.so %{buildroot}%{_libdir}/ + +# install tool +pushd tools/yabridgectl +%cargo_install +#install -D -m 0755 tools/yabridgectl/target/release/yabridgectl %{buildroot}%{_bindir}/ +popd + +# install migration scripts +install -D -m 0755 tools/migration/*.py %{buildroot}%{_bindir}/ + + + +#============================================================================= +# files +#----------------------------------------------------------------------------- +%files +%defattr(-,root,root) +%license COPYING +%doc CHANGELOG.md README.md ROADMAP.md tools/migration/README-migration.md +%attr(0755,root,root) %{_bindir}/yabridgectl +%attr(0755,root,root) %{_bindir}/yabridge-host.exe +%attr(0755,root,root) %{_bindir}/yabridge-host.exe.so +# migration scripts +%attr(0755,root,root) %{_bindir}/migrate-ardour.py +%attr(0755,root,root) %{_bindir}/migrate-bitwig.py +%attr(0755,root,root) %{_bindir}/migrate-reaper.py +%attr(0755,root,root) %{_bindir}/migrate-renoise.py +%if %{with_32bit} +%attr(0755,root,root) %{_bindir}/yabridge-host-32.exe +%attr(0755,root,root) %{_bindir}/yabridge-host-32.exe.so +%endif +%attr(0755,root,root) %{_libdir}/libyabridge-chainloader-clap.so +%attr(0755,root,root) %{_libdir}/libyabridge-chainloader-vst2.so +%attr(0755,root,root) %{_libdir}/libyabridge-chainloader-vst3.so +%attr(0755,root,root) %{_libdir}/libyabridge-clap.so +%attr(0755,root,root) %{_libdir}/libyabridge-vst2.so +%attr(0755,root,root) %{_libdir}/libyabridge-vst3.so + + +#============================================================================= +# post +#----------------------------------------------------------------------------- +%post +/sbin/ldconfig + + +#============================================================================= +# postun +#----------------------------------------------------------------------------- +%postun +/sbin/ldconfig + + +#============================================================================= +# changelog +#----------------------------------------------------------------------------- +%changelog +%autochangelog diff --git a/anda/multimedia/zrythm/zrythm.spec b/anda/multimedia/zrythm/zrythm.spec index 40d41b235f..f8ae490aee 100644 --- a/anda/multimedia/zrythm/zrythm.spec +++ b/anda/multimedia/zrythm/zrythm.spec @@ -1,4 +1,4 @@ -%global v v1.0.0 +%global v v2.0.0-alpha.0 Name: zrythm Version: %(echo %v | sed 's@-@~@g' | sed 's@^v@@') diff --git a/anda/stardust/armillary/stardust-armillary.spec b/anda/stardust/armillary/stardust-armillary.spec index 3a6fc88e92..8056e6743f 100644 --- a/anda/stardust/armillary/stardust-armillary.spec +++ b/anda/stardust/armillary/stardust-armillary.spec @@ -7,7 +7,7 @@ Name: stardust-xr-armillary Version: %commit_date.%shortcommit Release: 1%?dist -Summary: Model viewer for Stardust XR. +Summary: Model viewer for Stardust XR URL: https://github.com/StardustXR/armillary Source0: %url/archive/%commit/armillary-%commit.tar.gz License: MIT diff --git a/anda/stardust/atmosphere/stardust-atmosphere.spec b/anda/stardust/atmosphere/stardust-atmosphere.spec index 8a309c1151..e4b090b73c 100644 --- a/anda/stardust/atmosphere/stardust-atmosphere.spec +++ b/anda/stardust/atmosphere/stardust-atmosphere.spec @@ -7,7 +7,7 @@ Name: stardust-xr-atmosphere Version: %commit_date.%shortcommit Release: 1%?dist -Summary: Environment, homespace, and setup client for Stardust XR. +Summary: Environment, homespace, and setup client for Stardust XR URL: https://github.com/StardustXR/atmosphere Source0: %url/archive/%commit/atmosphere-%commit.tar.gz License: MIT @@ -17,7 +17,7 @@ Provides: atmosphere stardust-atmosphere Packager: Owen Zimmerman %description -%summary +%summary. %prep %autosetup -n atmosphere-%commit diff --git a/anda/stardust/black-hole/stardust-black-hole.spec b/anda/stardust/black-hole/stardust-black-hole.spec index 9aeff4f1b5..f80c0c6e60 100644 --- a/anda/stardust/black-hole/stardust-black-hole.spec +++ b/anda/stardust/black-hole/stardust-black-hole.spec @@ -2,12 +2,12 @@ %global commit_date 20241230 %global shortcommit %(c=%{commit}; echo ${c:0:7}) # Exclude input files from mangling -%global __brp_mangle_shebangs_exclude_from ^/usr/src/.*$ +%global __brp_mangle_shebangs_exclude_from ^/usr/src/.*$ Name: stardust-xr-black-hole Version: %commit_date.%shortcommit Release: 1%?dist -Summary: Spatial storage for Stardust XR. +Summary: Spatial storage for Stardust XR URL: https://github.com/StardustXR/black-hole Source0: %url/archive/%commit/black-hole-%commit.tar.gz License: MIT @@ -17,7 +17,7 @@ Provides: black-hole stardust-black-hole Packager: Owen Zimmerman %description -%summary +%summary. %prep %autosetup -n black-hole-%commit diff --git a/anda/stardust/comet/stardust-comet.spec b/anda/stardust/comet/stardust-comet.spec index d893cce5c1..0f12162cfd 100644 --- a/anda/stardust/comet/stardust-comet.spec +++ b/anda/stardust/comet/stardust-comet.spec @@ -7,7 +7,7 @@ Name: stardust-xr-comet Version: %commit_date.%shortcommit Release: 1%?dist -Summary: Annotate things in Stardust XR. +Summary: Annotate things in Stardust XR URL: https://github.com/StardustXR/comet Source0: %url/archive/%commit/comet-%commit.tar.gz License: MIT @@ -17,7 +17,7 @@ Provides: comet stardust-comet Packager: Owen Zimmerman %description -%summary +%summary. %prep %autosetup -n comet-%commit diff --git a/anda/stardust/flatland/stardust-flatland.spec b/anda/stardust/flatland/stardust-flatland.spec index 9aad7da700..e95b8bb8d2 100644 --- a/anda/stardust/flatland/stardust-flatland.spec +++ b/anda/stardust/flatland/stardust-flatland.spec @@ -7,7 +7,7 @@ Name: stardust-xr-flatland Version: %commit_date.%shortcommit Release: 2%?dist -Summary: Flatland for Stardust XR. +Summary: Flatland for Stardust XR URL: https://github.com/StardustXR/flatland Source0: %url/archive/%commit/flatland-%commit.tar.gz License: MIT @@ -17,7 +17,7 @@ Provides: flatland stardust-flatland Packager: Owen Zimmerman %description -%summary +%summary. %prep %autosetup -n flatland-%commit diff --git a/anda/stardust/gravity/stardust-gravity.spec b/anda/stardust/gravity/stardust-gravity.spec index 8489ee0f33..e388a24cbb 100644 --- a/anda/stardust/gravity/stardust-gravity.spec +++ b/anda/stardust/gravity/stardust-gravity.spec @@ -7,17 +7,17 @@ Name: stardust-xr-gravity Version: %commit_date.%shortcommit Release: 1%?dist -Summary: Utility to launch apps and Stardust XR clients spatially. +Summary: Utility to launch apps and Stardust XR clients spatially URL: https://github.com/StardustXR/gravity Source0: %url/archive/%commit/gravity-%commit.tar.gz License: MIT -BuildRequires: cargo cmake anda-srpm-macros cargo-rpm-macros mold +BuildRequires: cargo cmake anda-srpm-macros cargo-rpm-macros mold -Provides: stardust-gravity +Provides: gravity stardust-gravity Packager: Owen Zimmerman %description -%summary +%summary. %prep %autosetup -n gravity-%commit diff --git a/anda/stardust/magnetar/stardust-magnetar.spec b/anda/stardust/magnetar/stardust-magnetar.spec index d2e3deef8d..5df1f08241 100644 --- a/anda/stardust/magnetar/stardust-magnetar.spec +++ b/anda/stardust/magnetar/stardust-magnetar.spec @@ -7,7 +7,7 @@ Name: stardust-xr-magnetar Version: %commit_date.%shortcommit Release: 1%?dist -Summary: Workspaces client for Stardust XR. +Summary: Workspaces client for Stardust XR URL: https://github.com/StardustXR/magnetar Source0: %url/archive/%commit/magnetar-%commit.tar.gz License: MIT @@ -17,7 +17,7 @@ Provides: magnetar stardust-magnetar Packager: Owen Zimmerman %description -%summary +%summary. %prep %autosetup -n magnetar-%commit @@ -38,4 +38,3 @@ Packager: Owen Zimmerman %changelog * Wed Sep 11 2024 Owen-sz - Package StardustXR magnetar - diff --git a/anda/stardust/non-spatial-input/stardust-non-spatial-input.spec b/anda/stardust/non-spatial-input/stardust-non-spatial-input.spec index bc3ac41d97..5253334f22 100644 --- a/anda/stardust/non-spatial-input/stardust-non-spatial-input.spec +++ b/anda/stardust/non-spatial-input/stardust-non-spatial-input.spec @@ -7,7 +7,7 @@ Name: stardust-xr-non-spatial-input Version: %commit_date.%shortcommit Release: 1%?dist -Summary: Tools you can easily snap together to get non-spatial input into Stardust XR. +Summary: Tools you can easily snap together to get non-spatial input into Stardust XR URL: https://github.com/StardustXR/non-spatial-input Source0: %url/archive/%commit/non-spatial-input-%commit.tar.gz License: MIT @@ -17,7 +17,7 @@ Provides: non-spatial-input stardust-non-spatial-input Packager: Owen Zimmerman %description -%summary +%summary. %prep %autosetup -n non-spatial-input-%commit diff --git a/anda/stardust/protostar/stardust-protostar.spec b/anda/stardust/protostar/stardust-protostar.spec index fc2a96eee1..92bb200db5 100644 --- a/anda/stardust/protostar/stardust-protostar.spec +++ b/anda/stardust/protostar/stardust-protostar.spec @@ -7,7 +7,7 @@ Name: stardust-xr-protostar Version: %commit_date.%shortcommit Release: 1%?dist -Summary: Prototype application launcher for Stardust XR. +Summary: Prototype application launcher for Stardust XR URL: https://github.com/StardustXR/protostar Source0: %url/archive/%commit/protostar-%commit.tar.gz License: MIT diff --git a/anda/stardust/server/stardust-server.spec b/anda/stardust/server/stardust-server.spec index f77eab6e01..a6a1e8a4cf 100644 --- a/anda/stardust/server/stardust-server.spec +++ b/anda/stardust/server/stardust-server.spec @@ -7,7 +7,7 @@ Name: stardust-xr-server Version: %commit_date.%shortcommit Release: 1%?dist -Summary: Usable Linux display server that reinvents human-computer interaction for all kinds of XR. +Summary: Usable Linux display server that reinvents human-computer interaction for all kinds of XR URL: https://github.com/StardustXR/server Source0: %url/archive/%commit/server-%commit.tar.gz License: GPL-2.0-only diff --git a/anda/stardust/telescope/stardust-telescope.spec b/anda/stardust/telescope/stardust-telescope.spec index 5830464444..b45fc7c748 100644 --- a/anda/stardust/telescope/stardust-telescope.spec +++ b/anda/stardust/telescope/stardust-telescope.spec @@ -6,17 +6,25 @@ Name: stardust-xr-telescope Version: %commit_date.git~%shortcommit -Release: 1%?dist -Summary: See the stars! Easy stardust setups to run on your computer. +Release: 2%?dist +Summary: See the stars! Easy stardust setups to run on your computer License: MIT URL: https://github.com/StardustXR/telescope Source0: %url/archive/%commit.tar.gz + Requires: bash -Requires: stardust-xr-server -Requires: stardust-xr-gravity -Requires: stardust-xr-black-hole -Requires: stardust-xr-protostar Requires: xwayland-satellite +Requires: stardust-xr-armillary +Requires: stardust-xr-atmosphere +Requires: stardust-xr-black-hole +Requires: stardust-xr-comet +Requires: stardust-xr-flatland +Requires: stardust-xr-gravity +Requires: stardust-xr-magnetar +Requires: stardust-xr-non-spatial-input +Requires: stardust-xr-protostar +Requires: stardust-xr-server + BuildArch: noarch Provides: telescope stardust-telescope diff --git a/anda/system/asusctl/anda.hcl b/anda/system/asusctl/anda.hcl new file mode 100644 index 0000000000..6d319d1d22 --- /dev/null +++ b/anda/system/asusctl/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "asusctl.spec" + } +} diff --git a/anda/system/asusctl/asusctl.spec b/anda/system/asusctl/asusctl.spec new file mode 100644 index 0000000000..ccaa3574cf --- /dev/null +++ b/anda/system/asusctl/asusctl.spec @@ -0,0 +1,90 @@ +%global debug_package %{nil} + +Name: asusctl +Version: 6.1.21 +Release: 1%?dist +Summary: A control daemon, CLI tools, and a collection of crates for interacting with ASUS ROG laptops +URL: https://gitlab.com/asus-linux/asusctl +Source0: %url/-/archive/%version/asusctl-%version.tar.gz +License: MPL-2.0 +BuildRequires: anda-srpm-macros cargo-rpm-macros systemd-rpm-macros mold rust-udev-devel clang-devel +BuildRequires: desktop-file-utils +BuildRequires: cmake +BuildRequires: rust +BuildRequires: rust-std-static +BuildRequires: pkgconfig(gbm) +BuildRequires: pkgconfig(libinput) +BuildRequires: pkgconfig(libseat) +BuildRequires: pkgconfig(libudev) +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: pkgconfig(libzstd) +ExclusiveArch: x86_64 + +Packager: Metcya + +%description +%summary. + +%package rog-gui +Summary: An experimental gui for %name +Requires: %name + +%description rog-gui +A one-stop-shop GUI tool for asusd/asusctl. It aims to provide most controls, +a notification service, and ability to run in the background. + +%prep +%autosetup -n asusctl-%version +%cargo_prep_online + +%build +%cargo_build + +%install +%make_install + +install -D -m 0644 README.md %{buildroot}/%{_docdir}/%{name}/README.md +install -D -m 0644 rog-anime/README.md %{buildroot}/%{_docdir}/%{name}/README-anime.md +install -D -m 0644 rog-anime/data/diagonal-template.png %{buildroot}/%{_docdir}/%{name}/diagonal-template.png + +desktop-file-validate %{buildroot}/%{_datadir}/applications/rog-control-center.desktop + +%files +%license LICENSE +%{_datadir}/asusctl/LICENSE +%{_bindir}/asusd +%{_bindir}/asusd-user +%{_bindir}/asusctl +%{_unitdir}/asusd.service +%{_userunitdir}/asusd-user.service +%{_udevrulesdir}/99-asusd.rules +%dnl %{_sysconfdir}/asusd/ +%{_datadir}/asusd/aura_support.ron +%{_datadir}/dbus-1/system.d/asusd.conf +%{_datadir}/icons/hicolor/512x512/apps/asus_notif_yellow.png +%{_datadir}/icons/hicolor/512x512/apps/asus_notif_green.png +%{_datadir}/icons/hicolor/512x512/apps/asus_notif_red.png +%{_datadir}/icons/hicolor/512x512/apps/asus_notif_blue.png +%{_datadir}/icons/hicolor/512x512/apps/asus_notif_orange.png +%{_datadir}/icons/hicolor/512x512/apps/asus_notif_white.png +%{_datadir}/icons/hicolor/scalable/status/gpu-compute.svg +%{_datadir}/icons/hicolor/scalable/status/gpu-hybrid.svg +%{_datadir}/icons/hicolor/scalable/status/gpu-integrated.svg +%{_datadir}/icons/hicolor/scalable/status/gpu-nvidia.svg +%{_datadir}/icons/hicolor/scalable/status/gpu-vfio.svg +%{_datadir}/icons/hicolor/scalable/status/notification-reboot.svg +%{_docdir}/%{name}/ +%{_datadir}/asusd/ + +%files rog-gui +%{_bindir}/rog-control-center +%{_datadir}/applications/rog-control-center.desktop +%{_datadir}/icons/hicolor/512x512/apps/rog-control-center.png +%{_datadir}/rog-gui + +%changelog +* Tue Nov 18 2025 Metcya +- Remove unnecessary patch + +* Sun Oct 26 2025 Metcya +- Package asusctl diff --git a/anda/system/asusctl/update.rhai b/anda/system/asusctl/update.rhai new file mode 100644 index 0000000000..4496aa968e --- /dev/null +++ b/anda/system/asusctl/update.rhai @@ -0,0 +1 @@ +rpm.version(gitlab("20328305")); diff --git a/anda/system/cros-keyboard-map/cros-keyboard-map.spec b/anda/system/cros-keyboard-map/cros-keyboard-map.spec index 4401eb3229..a0de293630 100644 --- a/anda/system/cros-keyboard-map/cros-keyboard-map.spec +++ b/anda/system/cros-keyboard-map/cros-keyboard-map.spec @@ -1,6 +1,6 @@ -%global commit_date 20250619 +%global commit_date 20250921 -%global tree_commit 4e12f63955c1309c4e9580841083f05614f9e367 +%global tree_commit 7f7bfe5647635084b5699b2b7f4f5dfb489bbdae %global tree_shortcommit %(c=%{tree_commit}; echo ${c:0:7}) %global um_commit 46892acafb2fff3f3ace425d4694382c92645feb diff --git a/anda/system/croskbd/anda.hcl b/anda/system/croskbd/anda.hcl new file mode 100644 index 0000000000..1dafa1d896 --- /dev/null +++ b/anda/system/croskbd/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "croskbd.spec" + } +} diff --git a/anda/system/croskbd/croskbd.spec b/anda/system/croskbd/croskbd.spec new file mode 100644 index 0000000000..293ca006cf --- /dev/null +++ b/anda/system/croskbd/croskbd.spec @@ -0,0 +1,43 @@ +Name: croskbd +Version: 0.1.0 +Release: 1%{?dist} +Summary: Chromebook Keyboard Daemon + +License: BSD-3-Clause +URL: https://github.com/WeirdTreeThing/croskbd +Source0: %{url}/archive/refs/tags/v%{version}.tar.gz + +Packager: Owen Zimmerman + +BuildRequires: make gcc systemd-rpm-macros + +%description +%{summary}. + +%prep +%autosetup -n %{name}-%{version} + +%build +%make_build + +%install +%make_install DESTDIR=%{buildroot} PREFIX=%{_prefix} install install_systemd + +%post +%systemd_post %{name}.service + +%preun +%systemd_preun %{name}.service + +%postun +%systemd_postun_with_restart %{name}.service + +%files +%license LICENSE +%doc README.md +%{_bindir}/%{name} +%{_unitdir}/%{name}.service + +%changelog +* Tue Oct 07 2025 Owen-sz +- Initial commit diff --git a/anda/system/croskbd/update.rhai b/anda/system/croskbd/update.rhai new file mode 100644 index 0000000000..672b3a497a --- /dev/null +++ b/anda/system/croskbd/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("WeirdTreeThing/croskbd")); diff --git a/anda/system/dracut-strip-trigger/01-aggressive-strip.conf b/anda/system/dracut-strip-trigger/01-aggressive-strip.conf new file mode 100644 index 0000000000..cbd6a0dd35 --- /dev/null +++ b/anda/system/dracut-strip-trigger/01-aggressive-strip.conf @@ -0,0 +1,3 @@ +do_strip=yes +aggressive_strip=yes +hostonly=yes \ No newline at end of file diff --git a/anda/system/dracut-strip-trigger/dracut-strip-trigger.spec b/anda/system/dracut-strip-trigger/dracut-strip-trigger.spec index d788cbaa62..892dd3ec8c 100644 --- a/anda/system/dracut-strip-trigger/dracut-strip-trigger.spec +++ b/anda/system/dracut-strip-trigger/dracut-strip-trigger.spec @@ -1,10 +1,12 @@ Name: dracut-strip-trigger Version: 0 -Release: 3%?dist +Release: 6%?dist Summary: Strip initramfs aggressively License: GPL-3.0-only -Requires(post): dracut +Requires: dracut installonlypkg(kernel) +Conflicts: dracut-config-generic Source0: LICENSE +Source1: 01-aggressive-strip.conf %global _desc %{expand: Strip initramfs automatically for each kernel update using --hostonly --aggressive-strip. @@ -19,19 +21,26 @@ cat< README EOF cp %{S:0} . +%install + +mkdir -p %buildroot/usr/lib/dracut/dracut.conf.d/ +cat< %buildroot/usr/lib/dracut/dracut.conf.d/02-iscsi.conf +add_dracutmodules+=" iscsi " +EOF +cp %{S:1} %buildroot/usr/lib/dracut/dracut.conf.d/ + %files %doc README %license LICENSE +/usr/lib/dracut/dracut.conf.d/02-iscsi.conf +/usr/lib/dracut/dracut.conf.d/01-aggressive-strip.conf %post echo 'Regenerating all initramfs…' -dracut --force --parallel --regenerate-all --hostonly --strip --aggressive-strip +dracut --force --parallel --regenerate-all echo 'All non-rescue initramfs have been regenerated.' echo 'If you have problems booting up, use the rescue image, then uninstall `%name`.' -%triggerpostun -- installonlypkg(kernel) -dracut --force --hostonly --strip --aggressive-strip - %postun -echo 'Regenerating all initramfs…' -[ $1 = 0 ] && dracut --force --parallel --regenerate-all --no-hostonly --strip +[ $1 = 0 ] && echo 'Regenerating all initramfs…' +[ $1 = 0 ] && dracut --force --parallel --regenerate-all diff --git a/anda/system/falcond-profiles/falcond-profiles.spec b/anda/system/falcond-profiles/falcond-profiles.spec index 249ef87ffb..fa04977d38 100644 --- a/anda/system/falcond-profiles/falcond-profiles.spec +++ b/anda/system/falcond-profiles/falcond-profiles.spec @@ -1,10 +1,10 @@ -%global commit 96c2cdfee69761d2c29caebb4b1e9ff7cc904f7a +%global commit 56f49e5f51074d9b851e9e7f5d72e3c79d50d1a3 %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global commit_date 20250613 +%global commit_date 20250926 Name: falcond-profiles Version: 0^%{commit_date}git.%{shortcommit} -Release: 1%{?dist} +Release: 1%?dist Summary: Profiles for falcond License: MIT URL: https://github.com/PikaOS-Linux/falcond-profiles diff --git a/anda/system/falcond/falcond.spec b/anda/system/falcond/falcond.spec index dd4503b4f4..b777d07588 100644 --- a/anda/system/falcond/falcond.spec +++ b/anda/system/falcond/falcond.spec @@ -1,7 +1,7 @@ %global _include_minidebuginfo 0 Name: falcond -Version: 1.1.7 +Version: 1.1.9 Release: 1%?dist Summary: Advanced Linux Gaming Performance Daemon License: MIT diff --git a/anda/system/intel-lpmd/intel-lpmd.spec b/anda/system/intel-lpmd/intel-lpmd.spec index aea520d41d..c35d0ac036 100644 --- a/anda/system/intel-lpmd/intel-lpmd.spec +++ b/anda/system/intel-lpmd/intel-lpmd.spec @@ -1,7 +1,7 @@ %global _distro_extra_cflags -Wno-unused-variable -Wno-unused-function -Wno-switch -I/usr/lib/gcc/**/include/ Name: intel-lpmd -Version: 0.0.9 +Version: 0.1.0 Release: 1%?dist Summary: Linux daemon designed to optimize active idle power License: GPL-2.0-only diff --git a/anda/system/ipu6-drivers/akmod/intel-ipu6-kmod.spec b/anda/system/ipu6-drivers/akmod/intel-ipu6-kmod.spec index d6993ca54a..e19df74d48 100644 --- a/anda/system/ipu6-drivers/akmod/intel-ipu6-kmod.spec +++ b/anda/system/ipu6-drivers/akmod/intel-ipu6-kmod.spec @@ -1,8 +1,8 @@ %global buildforkernels akmod %global debug_package %{nil} -%global commit 9dd646ee2298cbb3cb58631f410890ef382309f6 +%global commit 9766e218112f4173be9b0f06dfae27cb40c54f40 %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global commit_date 20250827 +%global commit_date 20251113 %global modulename intel-ipu6 # Actual "release" version, currently unused as the release versions are back and forth on if on if they use 1.0.0 or 1.0.1 %global ver 1.0.1 diff --git a/anda/system/ipu6-drivers/dkms/dkms-intel-ipu6.spec b/anda/system/ipu6-drivers/dkms/dkms-intel-ipu6.spec index 75be93c5fa..bd33497179 100644 --- a/anda/system/ipu6-drivers/dkms/dkms-intel-ipu6.spec +++ b/anda/system/ipu6-drivers/dkms/dkms-intel-ipu6.spec @@ -1,7 +1,7 @@ %global debug_package %{nil} -%global commit 9dd646ee2298cbb3cb58631f410890ef382309f6 +%global commit 9766e218112f4173be9b0f06dfae27cb40c54f40 %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global commit_date 20250827 +%global commit_date 20251113 %global modulename intel-ipu6 # Actual "release" version, currently unused as the release versions are back and forth on if on if they use 1.0.0 or 1.0.1 %global ver 1.0.1 diff --git a/anda/system/ipu6-drivers/kmod-common/intel-ipu6-drivers.spec b/anda/system/ipu6-drivers/kmod-common/intel-ipu6-drivers.spec index 057c5389e4..ef834198a2 100644 --- a/anda/system/ipu6-drivers/kmod-common/intel-ipu6-drivers.spec +++ b/anda/system/ipu6-drivers/kmod-common/intel-ipu6-drivers.spec @@ -1,7 +1,7 @@ %global debug_package %{nil} -%global commit 9dd646ee2298cbb3cb58631f410890ef382309f6 +%global commit 9766e218112f4173be9b0f06dfae27cb40c54f40 %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global commit_date 20250827 +%global commit_date 20251113 # Actual "release" version, currently unused as the release versions are back and forth on if on if they use 1.0.0 or 1.0.1 # Use this if they ever stop doing that I guess %global ver 1.0.1 diff --git a/anda/system/limine/.gitignore b/anda/system/limine/.gitignore new file mode 100644 index 0000000000..b43bf86b50 --- /dev/null +++ b/anda/system/limine/.gitignore @@ -0,0 +1 @@ +README.md diff --git a/anda/system/limine/limine.spec b/anda/system/limine/limine.spec index 8a7156319d..e4583251a5 100644 --- a/anda/system/limine/limine.spec +++ b/anda/system/limine/limine.spec @@ -1,11 +1,11 @@ Name: limine -Version: moved.to.codeberg +Version: 10.3.0 Release: 1%?dist Summary: Modern, advanced, portable, multiprotocol bootloader License: BSD-2-Clause URL: https://limine-bootloader.org -Source0: https://github.com/limine-bootloader/limine/releases/download/v%version/limine-%version.tar.gz -Source1: https://raw.githubusercontent.com/limine-bootloader/limine/v%version/README.md +Source0: https://codeberg.org/Limine/Limine/releases/download/v%version/limine-%version.tar.gz +Source1: https://codeberg.org/Limine/Limine/raw/tag/v%version/README.md Packager: madonuko BuildRequires: nasm mtools llvm lld clang make @@ -15,10 +15,10 @@ the reference implementation for the Limine boot protocol. %prep %autosetup -cp %SOURCE1 . +cp %{S:1} . %build -%configure --enable-all TOOLCHAIN_FOR_TARGET=llvm +%configure --enable-all CC_FOR_TARGET=clang LD_FOR_TARGET=ld.lld %make_build %install @@ -27,7 +27,7 @@ cp %SOURCE1 . %files %doc README.md 3RDPARTY.md FAQ.md CONFIG.md PROTOCOL.md COPYING USAGE.md -%doc %_datadir/doc/limine/LICENSES/LicenseRef-scancode-bsd-no-disclaimer-unmodified.txt +%license %_datadir/doc/limine/LICENSES/LicenseRef-scancode-bsd-no-disclaimer-unmodified.txt %license COPYING %_bindir/limine %_includedir/limine.h diff --git a/anda/system/limine/update.rhai b/anda/system/limine/update.rhai index bd43fbeb2c..eb0821f62d 100644 --- a/anda/system/limine/update.rhai +++ b/anda/system/limine/update.rhai @@ -1 +1,3 @@ -rpm.version(gh("limine-bootloader/limine")); +import "andax/bump_extras.rhai" as bump; + +rpm.version(bump::codeberg("Limine/Limine")); diff --git a/anda/system/nvidia-patch/anda.hcl b/anda/system/nvidia-patch/anda.hcl index 8ea88871d3..f09bc9a4df 100644 --- a/anda/system/nvidia-patch/anda.hcl +++ b/anda/system/nvidia-patch/anda.hcl @@ -3,7 +3,7 @@ project "pkg" { spec = "nvidia-patch.spec" } labels { - nightly = "1" + nightly = 1 subrepo = "nvidia" } } diff --git a/anda/system/nvidia-patch/nvidia-patch.spec b/anda/system/nvidia-patch/nvidia-patch.spec index 824bbfbf30..64fe765b7f 100644 --- a/anda/system/nvidia-patch/nvidia-patch.spec +++ b/anda/system/nvidia-patch/nvidia-patch.spec @@ -1,7 +1,7 @@ %global debug_package %{nil} -%global commit 0d73206875f7e5096356c4b510cd30f1e84b3fd1 +%global commit a7690e64b5080452596ffd55062c625abe05fa3a %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global commit_date 20250825 +%global commit_date 20251108 %global patches %{_datadir}/src/nvidia-patch diff --git a/anda/system/nvidia-patch/update.rhai b/anda/system/nvidia-patch/update.rhai index 3783aaf80a..7cf60be5cf 100644 --- a/anda/system/nvidia-patch/update.rhai +++ b/anda/system/nvidia-patch/update.rhai @@ -1,7 +1,5 @@ -if filters.contains("nightly") { - rpm.global("commit", gh_commit("keylase/nvidia-patch")); - if rpm.changed() { - rpm.global("commit_date", date()); - rpm.release(); - } +rpm.global("commit", gh_commit("keylase/nvidia-patch")); +if rpm.changed() { + rpm.global("commit_date", date()); + rpm.release(); } diff --git a/anda/lib/nvidia/compat-nvidia-repo/anda.hcl b/anda/system/nvidia/compat-nvidia-repo/anda.hcl similarity index 89% rename from anda/lib/nvidia/compat-nvidia-repo/anda.hcl rename to anda/system/nvidia/compat-nvidia-repo/anda.hcl index 0cfec17863..4b01e5daf7 100644 --- a/anda/lib/nvidia/compat-nvidia-repo/anda.hcl +++ b/anda/system/nvidia/compat-nvidia-repo/anda.hcl @@ -5,5 +5,6 @@ project pkg { } labels { subrepo = "nvidia" + weekly = 3 } } diff --git a/anda/lib/nvidia/compat-nvidia-repo/compat-nvidia-repo.spec b/anda/system/nvidia/compat-nvidia-repo/compat-nvidia-repo.spec similarity index 97% rename from anda/lib/nvidia/compat-nvidia-repo/compat-nvidia-repo.spec rename to anda/system/nvidia/compat-nvidia-repo/compat-nvidia-repo.spec index 3ae57d43ef..834aed6efc 100644 --- a/anda/lib/nvidia/compat-nvidia-repo/compat-nvidia-repo.spec +++ b/anda/system/nvidia/compat-nvidia-repo/compat-nvidia-repo.spec @@ -1,5 +1,5 @@ Name: compat-nvidia-repo -Version: 580.76.05 +Version: 580.105.08 Epoch: 3 Release: 1%?dist Summary: Compatibility package required by official CUDA packages diff --git a/anda/lib/nvidia/compat-nvidia-repo/update.rhai b/anda/system/nvidia/compat-nvidia-repo/update.rhai similarity index 100% rename from anda/lib/nvidia/compat-nvidia-repo/update.rhai rename to anda/system/nvidia/compat-nvidia-repo/update.rhai diff --git a/anda/system/nvidia/dkms-nvidia/closed/anda.hcl b/anda/system/nvidia/dkms-nvidia/closed/anda.hcl index 1fc99a9f40..cb2055bdb2 100644 --- a/anda/system/nvidia/dkms-nvidia/closed/anda.hcl +++ b/anda/system/nvidia/dkms-nvidia/closed/anda.hcl @@ -4,5 +4,6 @@ project pkg { } labels { subrepo = "nvidia" + updbranch = 1 } } diff --git a/anda/system/nvidia/dkms-nvidia/closed/dkms-nvidia.spec b/anda/system/nvidia/dkms-nvidia/closed/dkms-nvidia.spec index ea35ae369d..8022d1ceff 100644 --- a/anda/system/nvidia/dkms-nvidia/closed/dkms-nvidia.spec +++ b/anda/system/nvidia/dkms-nvidia/closed/dkms-nvidia.spec @@ -6,7 +6,7 @@ %global modulename nvidia Name: dkms-%{modulename} -Version: 580.76.05 +Version: 580.105.08 Release: 1%?dist Summary: NVIDIA display driver kernel module Epoch: 3 diff --git a/anda/system/nvidia/dkms-nvidia/closed/update.rhai b/anda/system/nvidia/dkms-nvidia/closed/update.rhai index e5eff132c0..a50e623acd 100644 --- a/anda/system/nvidia/dkms-nvidia/closed/update.rhai +++ b/anda/system/nvidia/dkms-nvidia/closed/update.rhai @@ -1,3 +1,3 @@ -import "andax/nvidia.rhai" as nvidia; +import "andax/bump_extras.rhai" as bump; -rpm.version(nvidia::nvidia_driver_version()); +rpm.version(bump::madoguchi("nvidia-kmod-common", labels.branch)); diff --git a/anda/system/nvidia/dkms-nvidia/open/anda.hcl b/anda/system/nvidia/dkms-nvidia/open/anda.hcl index 3bc9d135c7..d3607398c9 100644 --- a/anda/system/nvidia/dkms-nvidia/open/anda.hcl +++ b/anda/system/nvidia/dkms-nvidia/open/anda.hcl @@ -4,5 +4,6 @@ project pkg { } labels { subrepo = "nvidia" + updbranch = 1 } } diff --git a/anda/system/nvidia/dkms-nvidia/open/dkms-nvidia-open.spec b/anda/system/nvidia/dkms-nvidia/open/dkms-nvidia-open.spec index c5deff7b67..0f344a4385 100644 --- a/anda/system/nvidia/dkms-nvidia/open/dkms-nvidia-open.spec +++ b/anda/system/nvidia/dkms-nvidia/open/dkms-nvidia-open.spec @@ -4,7 +4,7 @@ %global modulename nvidia Name: dkms-%{modulename}-open -Version: 580.76.05 +Version: 580.105.08 Release: 1%?dist Summary: NVIDIA display driver kernel module Epoch: 3 diff --git a/anda/system/nvidia/dkms-nvidia/open/update.rhai b/anda/system/nvidia/dkms-nvidia/open/update.rhai index e5eff132c0..a50e623acd 100644 --- a/anda/system/nvidia/dkms-nvidia/open/update.rhai +++ b/anda/system/nvidia/dkms-nvidia/open/update.rhai @@ -1,3 +1,3 @@ -import "andax/nvidia.rhai" as nvidia; +import "andax/bump_extras.rhai" as bump; -rpm.version(nvidia::nvidia_driver_version()); +rpm.version(bump::madoguchi("nvidia-kmod-common", labels.branch)); diff --git a/anda/system/nvidia/libva-nvidia-driver/libva-nvidia-driver.spec b/anda/system/nvidia/libva-nvidia-driver/libva-nvidia-driver.spec index 80b71db25e..3462a97b36 100644 --- a/anda/system/nvidia/libva-nvidia-driver/libva-nvidia-driver.spec +++ b/anda/system/nvidia/libva-nvidia-driver/libva-nvidia-driver.spec @@ -1,5 +1,5 @@ -%global commit0 e02b9c5c714f35a7576f0c1e549327e060fc7903 -%global date 20250819 +%global commit0 57a476b0e55f015759d9c50cc1f13159c6cd8f95 +%global date 20251114 %global shortcommit0 %(c=%{commit0}; echo ${c:0:7}) %global upstream_name nvidia-vaapi-driver @@ -41,7 +41,7 @@ Provides: nvdec-vaapi-driver = %{version}-%{release} Requires: mesa-filesystem %if 0%{?fedora} %ifarch x86_64 -Requires: %{name}(x86-32) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: (%{name}(x86-32) = %{?epoch:%{epoch}:}%{version}-%{release} if steam(x86-32)) %endif %endif @@ -73,31 +73,4 @@ decode of web content, and may not operate correctly in other applications. %{_libdir}/dri/nvidia_drv_video.so %changelog -* Sun Nov 10 2024 Simone Caronni - 1:0.0.13^20241108git259b7b7-1 -- Update to latest snapshot. -- Drop no longer needed patch. - -* Fri Oct 04 2024 Simone Caronni - 1:0.0.12^20240909git68efa33-2 -- Update to latest snapshot. -- Add patch for 560/Wayland. - -* Mon May 06 2024 Simone Caronni - 1:0.0.12-1 -- Update to 0.0.12. -- Trim changelog. -- Clean up SPEC file, allow it to build for EL8. - -* Wed Nov 08 2023 Simone Caronni - 0.0.11-1 -- Update to 0.0.11. -- Rename to libva-nvidia-driver, as in main Fedora repository. - -* Wed Jun 28 2023 Simone Caronni - 0.0.10-1 -- Update to 0.0.10. - -* Mon Mar 20 2023 Simone Caronni - 0.0.9-1.20230319gitc0a7f54 -- Update to latest snapshot. - -* Mon Feb 06 2023 Simone Caronni - 0.0.8-2.20230205git17c62b8 -- Add latest fixes. - -* Sat Feb 04 2023 Simone Caronni - 0.0.8-1.20230131git2bb71a5 -- Rebase to latest snapshot. +%autochangelog diff --git a/anda/system/nvidia/nvidia-container-toolkit/nvidia-container-toolkit.spec b/anda/system/nvidia/nvidia-container-toolkit/nvidia-container-toolkit.spec index 62253019ac..c3a38b2725 100644 --- a/anda/system/nvidia/nvidia-container-toolkit/nvidia-container-toolkit.spec +++ b/anda/system/nvidia/nvidia-container-toolkit/nvidia-container-toolkit.spec @@ -1,5 +1,5 @@ Name: nvidia-container-toolkit -Version: 1.17.8 +Version: 1.18.0 Release: 1%?dist Summary: NVIDIA Container Toolkit License: Apache-2.0 diff --git a/anda/system/nvidia/nvidia-driver/70-nvidia-driver.preset b/anda/system/nvidia/nvidia-driver/70-nvidia-driver.preset index 4d7eeef038..f897d23a61 100644 --- a/anda/system/nvidia/nvidia-driver/70-nvidia-driver.preset +++ b/anda/system/nvidia/nvidia-driver/70-nvidia-driver.preset @@ -4,6 +4,7 @@ enable nvidia-hibernate.service enable nvidia-resume.service enable nvidia-suspend.service +enable nvidia-suspend-then-hibernate.service # Enable Dynamic Boost. From: # file:///usr/share/doc/nvidia-driver/html/dynamicboost.html diff --git a/anda/system/nvidia/nvidia-driver/anda.hcl b/anda/system/nvidia/nvidia-driver/anda.hcl index 91ae1308c7..c74ea60d94 100644 --- a/anda/system/nvidia/nvidia-driver/anda.hcl +++ b/anda/system/nvidia/nvidia-driver/anda.hcl @@ -9,5 +9,6 @@ project "pkg" { labels = { subrepo = "nvidia" mock = 1 + weekly = 3 } -} \ No newline at end of file +} diff --git a/anda/system/nvidia/nvidia-driver/nvidia-driver.spec b/anda/system/nvidia/nvidia-driver/nvidia-driver.spec index e4055754ea..3572d6d243 100644 --- a/anda/system/nvidia/nvidia-driver/nvidia-driver.spec +++ b/anda/system/nvidia/nvidia-driver/nvidia-driver.spec @@ -10,7 +10,7 @@ %endif Name: nvidia-driver -Version: 580.76.05 +Version: 580.105.08 Release: 1%?dist Summary: NVIDIA's proprietary display driver for NVIDIA graphic cards Epoch: 3 @@ -63,10 +63,11 @@ version %{version}. %package libs Summary: Libraries for %{name} -Requires: egl-gbm%{?_isa} >= 2:1.1.2 -Requires: egl-wayland%{?_isa} >= 1.1.13.1 -Requires: egl-x11%{?_isa} -Requires: libvdpau%{?_isa} >= 0.5 +Requires: egl-gbm%{?_isa} >= 2:1.1.2.1 +Requires: (egl-wayland%{?_isa} >= 1.1.20 or egl-wayland2%{?_isa} >= 1.0.0~20250806gitd4deb7c-3) +Suggests: egl-wayland%{?_isa} >= 1.1.20 +Requires: egl-x11%{?_isa} >= 1.0.3 +Requires: libvdpau%{?_isa} >= 1.5 Requires: libglvnd%{?_isa} >= 1.0 Requires: libglvnd-egl%{?_isa} >= 1.0 Requires: libglvnd-gles%{?_isa} >= 1.0 @@ -76,7 +77,7 @@ Requires: libnvidia-ml%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} Requires: vulkan-loader %if 0%{?fedora} %ifarch x86_64 -Requires: %{name}-libs(x86-32) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: (%{name}-libs(x86-32) = %{?epoch:%{epoch}:}%{version}-%{release} if steam(x86-32)) %endif %endif # dlopened @@ -102,7 +103,7 @@ Requires: libnvidia-cfg = %{?epoch:%{epoch}:}%{version}-%{release} %endif %if 0%{?fedora} %ifarch x86_64 -Requires: %{name}-cuda-libs(x86-32) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: (%{name}-cuda-libs(x86-32) = %{?epoch:%{epoch}:}%{version}-%{release} if steam(x86-32)) %endif %endif # dlopened: @@ -121,7 +122,7 @@ Provides: nvidia-driver-NvFBCOpenGL = %{?epoch:%{epoch}:}%{version}-%{rele Obsoletes: nvidia-driver-NvFBCOpenGL < %{?epoch:%{epoch}:}%{version}-%{release} %if 0%{?fedora} %ifarch x86_64 -Requires: libnvidia-fbc(x86-32) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: (libnvidia-fbc(x86-32) = %{?epoch:%{epoch}:}%{version}-%{release} if steam(x86-32)) %endif %endif # dlopened: @@ -137,7 +138,7 @@ graphics scenarios. Summary: NVIDIA library for shader compilation (nvgpucomp) %if 0%{?fedora} %ifarch x86_64 -Requires: libnvidia-gpucomp(x86-32) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: (libnvidia-gpucomp(x86-32) = %{?epoch:%{epoch}:}%{version}-%{release} if steam(x86-32)) %endif %endif @@ -151,7 +152,7 @@ Provides: cuda-nvml%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} Provides: nvidia-driver-NVML = %{?epoch:%{epoch}:}%{version}-%{release} %if 0%{?fedora} %ifarch x86_64 -Requires: libnvidia-ml(x86-32) = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: (libnvidia-ml(x86-32) = %{?epoch:%{epoch}:}%{version}-%{release} if steam(x86-32)) %endif %endif Obsoletes: nvidia-driver-NVML < %{?epoch:%{epoch}:}%{version}-%{release} diff --git a/anda/system/nvidia/nvidia-kmod-common/99-nvidia.conf b/anda/system/nvidia/nvidia-kmod-common/99-nvidia.conf new file mode 100644 index 0000000000..ddff6a6500 --- /dev/null +++ b/anda/system/nvidia/nvidia-kmod-common/99-nvidia.conf @@ -0,0 +1,3 @@ +# Omit the nvidia driver from the ramdisk, to avoid needing to regenerate +# the ramdisk on updates. +omit_drivers+=" nvidia nvidia_drm nvidia_modeset nvidia_peermem nvidia_uvm " diff --git a/anda/system/nvidia/nvidia-kmod-common/anda.hcl b/anda/system/nvidia/nvidia-kmod-common/anda.hcl index 915b62fb8f..ae7a91b959 100644 --- a/anda/system/nvidia/nvidia-kmod-common/anda.hcl +++ b/anda/system/nvidia/nvidia-kmod-common/anda.hcl @@ -5,5 +5,6 @@ project "pkg" { arches = ["x86_64"] labels = { subrepo = "nvidia" + weekly = 3 } -} \ No newline at end of file +} diff --git a/anda/system/nvidia/nvidia-kmod-common/nvidia-boot-update b/anda/system/nvidia/nvidia-kmod-common/nvidia-boot-update new file mode 100755 index 0000000000..142d7ca48a --- /dev/null +++ b/anda/system/nvidia/nvidia-kmod-common/nvidia-boot-update @@ -0,0 +1,207 @@ +#!/usr/bin/sh + + +# EL8 (grub2 with BootLoaderSpec patches) +# +# kernel options: grub.cfg + grubenv + /etc/kernel/cmdline +# kernel options in /boot/loader/entries/*.conf use kernelopts from /boot/grub2/grubenv +# grubby +# - updates kernelopts in /boot/grub2/grubenv +# - does not update /etc/default/grub +# - does not update kernelopts in grub.cfg +# grub.cfg: +# - UEFI: /etc/grub2-efi.cfg -> /boot/efi/EFI//grub.cfg +# - BIOS: /etc/grub2.cfg -> /boot/grub2/grub.cfg + + +# EL9 + EL10 (grub2 with BootLoaderSpec patches) +# +# kernel options: grub.cfg + /etc/kernel/cmdline + /boot/loader/entries/*.conf +# manually update: /etc/default/grub + /etc/kernel/cmdline +# /etc/kernel/cmdline is not really used +# grub2-mkconfig does not update /boot/loader/entries/*.conf +# grub.cfg: +# - UEFI: /etc/grub2-efi.cfg -> /boot/efi/EFI//grub.cfg +# - BIOS: /etc/grub2.cfg -> /boot/grub2/grub.cfg + + +# Fedora (grub2 with BootLoaderSpec patches) +# +# kernel options: grub.cfg + /etc/kernel/cmdline + /boot/loader/entries/*.conf +# manually update: /etc/default/grub +# grub2-mkconfig: +# - updates /boot/loader/entries/*.conf +# - updates /etc/kernel/cmdline +# grub.cfg: +# - UEFI/BIOS: /boot/grub2/grub.cfg + + +# Fedora (systemd-boot) +# +# kernel options: grub.cfg + /boot/efi/loader/entries/*.conf (UEFI only) +# grubby as an updateloaderentries alias: +# - updates all entries in /boot/efi/loader/entries/*.conf +# - does not work with multiple parameters at once +# - does not update /etc/kernel/cmdline + + +# Complete use case coverage, regardless of boot loaders: +# +# - update options in /etc/default/grub +# - regenerate grub.cfg/grubenv +# - update options in /boot/{efi/}loader/entries/*.conf entries +# - update options in /etc/kernel/cmdline +# - cover both UEFI and BIOS case + +CMDLINE_ARGS_NVIDIA="rd.driver.blacklist=nouveau rd.driver.blacklist=nova-core" +CMDLINE_ARGS_ALWAYS_REMOVE="nomodeset gfxpayload=vga=normal nouveau.modeset=0 nvidia-drm.modeset=1 nvidia-drm.fbdev=1 modprobe.blacklist=nouveau initcall_blacklist=simpledrm_platform_driver_init" + +print_usage() { +cat <> /etc/default/grub + else + for param in $CMDLINE_ARGS_NVIDIA; do + echo ${GRUB_CMDLINE_LINUX} | grep -q $param + [ $? -eq 1 ] && GRUB_CMDLINE_LINUX="${GRUB_CMDLINE_LINUX} ${param}" + done + for param in $CMDLINE_ARGS_ALWAYS_REMOVE; do + echo ${GRUB_CMDLINE_LINUX} | grep -q $param + [ $? -eq 0 ] && GRUB_CMDLINE_LINUX="$(echo ${GRUB_CMDLINE_LINUX} | sed -e "s/ $param//g")" + done + sed -i -e "s|^GRUB_CMDLINE_LINUX=.*|GRUB_CMDLINE_LINUX=\"${GRUB_CMDLINE_LINUX}\"|g" /etc/default/grub + fi + + grub2-mkconfig -o $GRUB_CFG &>/dev/null + + fi + + # Edit BootLoaderSpec entries + if [ -v BLS_ENTRIES ]; then + + for config_file in $BLS_ENTRIES/*.conf; do + for param in $CMDLINE_ARGS_NVIDIA; do + grep -q $param $config_file + [ $? -eq 1 ] && sed -i -e "s|^options.*|& $param|" $config_file + done + for param in $CMDLINE_ARGS_ALWAYS_REMOVE; do + grep -q $param $config_file + [ $? -eq 0 ] && sed -i -e "s| $param||" $config_file + done + done + + fi + + # Edit /etc/kernel/cmdline + for param in $CMDLINE_ARGS_NVIDIA; do + grep -q $param /etc/kernel/cmdline + [ $? -eq 1 ] && sed -i -e "s|^.*|& $param|" /etc/kernel/cmdline + done + for param in $CMDLINE_ARGS_ALWAYS_REMOVE; do + grep -q $param /etc/kernel/cmdline + [ $? -eq 0 ] && sed -i -e "s| $param||" /etc/kernel/cmdline + done + +} + +preun() { + + # Edit GRUB configuration file + if [ -v GRUB_CFG ]; then + + for param in $CMDLINE_ARGS_NVIDIA; do + echo ${GRUB_CMDLINE_LINUX} | grep -q $param + [ $? -eq 0 ] && GRUB_CMDLINE_LINUX="$(echo ${GRUB_CMDLINE_LINUX} | sed -e "s/ $param//g")" + done + sed -i -e "s|^GRUB_CMDLINE_LINUX=.*|GRUB_CMDLINE_LINUX=\"${GRUB_CMDLINE_LINUX}\"|g" /etc/default/grub + + grub2-mkconfig -o $GRUB_CFG &>/dev/null + + fi + + # Edit BootLoaderSpec entries + if [ -v BLS_ENTRIES ]; then + + for config_file in $BLS_ENTRIES/*.conf; do + for param in $CMDLINE_ARGS_NVIDIA; do + grep -q $param $config_file + [ $? -eq 0 ] && sed -i -e "s| $param||" $config_file + done + done + + fi + + # Edit /etc/kernel/cmdline + for param in $CMDLINE_ARGS_NVIDIA; do + grep -q $param /etc/kernel/cmdline + [ $? -eq 0 ] && sed -i -e "s| $param||" /etc/kernel/cmdline + done + +} + +case "$1" in + post) + check + post + exit 0 + ;; + preun) + check + preun + exit 0 + ;; + *) + print_usage + exit 0 + ;; +esac diff --git a/anda/system/nvidia/nvidia-kmod-common/nvidia-kmod-common.spec b/anda/system/nvidia/nvidia-kmod-common/nvidia-kmod-common.spec index 4e8e38fce2..a108ced848 100644 --- a/anda/system/nvidia/nvidia-kmod-common/nvidia-kmod-common.spec +++ b/anda/system/nvidia/nvidia-kmod-common/nvidia-kmod-common.spec @@ -1,5 +1,3 @@ -%global _dracutopts_in rd.driver.blacklist=nouveau modprobe.blacklist=nouveau -%global _dracutopts_rm nomodeset gfxpayload=vga=normal nouveau.modeset=0 nvidia-drm.modeset=1 initcall_blacklist=simpledrm_platform_driver_init %global _dracut_conf_d %{_prefix}/lib/dracut/dracut.conf.d # gsp_*.bin: ELF 64-bit LSB executable, UCB RISC-V @@ -7,7 +5,7 @@ %global __brp_strip %{nil} Name: nvidia-kmod-common -Version: 580.76.05 +Version: 580.105.08 Release: 1%?dist Summary: Common file for NVIDIA's proprietary driver kernel modules Epoch: 3 @@ -17,12 +15,12 @@ URL: http://www.nvidia.com/object/unix.html BuildArch: noarch Source0: http://download.nvidia.com/XFree86/Linux-x86_64/%{version}/NVIDIA-Linux-x86_64-%{version}.run -Source18: MODULE_VARIANT.txt -Source19: nvidia-modeset.conf -Source20: nvidia.conf -Source21: 60-nvidia.rules -Source22: nvidia-fallback.service -Source23: 10-nvidia-fallback.rules +Source16: MODULE_VARIANT.txt +Source17: nvidia-boot-update +Source18: nvidia-modeset.conf +Source19: nvidia.conf +Source20: 60-nvidia.rules +Source21: 99-nvidia.conf # UDev rule location (_udevrulesdir) and systemd macros: BuildRequires: systemd-rpm-macros @@ -39,35 +37,44 @@ Obsoletes: cuda-nvidia-kmod-common < %{?epoch:%{epoch}:}%{version} %description This package provides the common files required by all NVIDIA kernel module package variants. - + %prep sh %{SOURCE0} -x --target nvidia-kmod-%{version}-x86_64 %setup -T -D -n nvidia-kmod-%{version}-x86_64 %install +# Script for post/preun tasks +install -p -m 0755 -D %{SOURCE17} %{buildroot}%{_bindir}/nvidia-boot-update + # Nvidia modesetting support: -install -p -m 0644 -D %{SOURCE19} %{buildroot}%{_sysconfdir}/modprobe.d/nvidia-modeset.conf +install -p -m 0644 -D %{SOURCE18} %{buildroot}%{_sysconfdir}/modprobe.d/nvidia-modeset.conf # Load nvidia-uvm, enable complete power management: -install -p -m 0644 -D %{SOURCE20} %{buildroot}%{_modprobedir}/nvidia.conf +install -p -m 0644 -D %{SOURCE19} %{buildroot}%{_modprobedir}/nvidia.conf + +# Avoid Nvidia modules getting in the initrd: +install -p -m 0644 -D %{SOURCE21} %{buildroot}%{_dracut_conf_d}/99-nvidia.conf # UDev rules # https://github.com/NVIDIA/nvidia-modprobe/blob/master/modprobe-utils/nvidia-modprobe-utils.h#L33-L46 # https://github.com/negativo17/nvidia-kmod-common/issues/11 # https://github.com/negativo17/nvidia-driver/issues/27 -install -p -m 644 -D %{SOURCE21} %{buildroot}%{_udevrulesdir}/60-nvidia.rules +install -p -m 644 -D %{SOURCE20} %{buildroot}%{_udevrulesdir}/60-nvidia.rules # Firmware files: mkdir -p %{buildroot}%{_prefix}/lib/firmware/nvidia/%{version}/ install -p -m 644 firmware/* %{buildroot}%{_prefix}/lib/firmware/nvidia/%{version} +%post +%{_bindir}/nvidia-boot-update post + # Old kernel.conf rewritten as a doc file. cp %{SOURCE18} . # Fallback service. Fall back to Nouveau if NVIDIA drivers fail. # This is actually from RPM Fusion. -install -Dm644 %{SOURCE22} -t %{buildroot}%{_unitdir} -install -Dm644 %{SOURCE23} -t %{buildroot}%{_udevrulesdir} +%dnl install -Dm644 %{SOURCE22} -t %{buildroot}%{_unitdir} +%dnl install -Dm644 %{SOURCE23} -t %{buildroot}%{_udevrulesdir} %pre # Remove the kernel command line adjustments one last time when doing an upgrade @@ -81,15 +88,14 @@ fi ||: dracut --regenerate-all --force %files -%doc MODULE_VARIANT.txt +%{_dracut_conf_d}/99-nvidia.conf %{_modprobedir}/nvidia.conf %dir %{_prefix}/lib/firmware %dir %{_prefix}/lib/firmware/nvidia %{_prefix}/lib/firmware/nvidia/%{version} +%{_bindir}/nvidia-boot-update %config(noreplace) %{_sysconfdir}/modprobe.d/nvidia-modeset.conf -%{_udevrulesdir}/10-nvidia-fallback.rules %{_udevrulesdir}/60-nvidia.rules -%{_unitdir}/nvidia-fallback.service %changelog %autochangelog diff --git a/anda/system/nvidia/nvidia-kmod-common/nvidia-modeset.conf b/anda/system/nvidia/nvidia-kmod-common/nvidia-modeset.conf index c4e6e744e5..9ac5dcd4b6 100644 --- a/anda/system/nvidia/nvidia-kmod-common/nvidia-modeset.conf +++ b/anda/system/nvidia/nvidia-kmod-common/nvidia-modeset.conf @@ -1,4 +1,4 @@ # Nvidia modesetting support. Set to 0 or comment to disable kernel modesetting # support. This must be disabled in case of SLI Mosaic. -options nvidia-drm modeset=1 fbdev=1 +options nvidia-drm modeset=1 diff --git a/anda/system/nvidia/nvidia-kmod-common/nvidia.conf b/anda/system/nvidia/nvidia-kmod-common/nvidia.conf index 0e4083bf5e..04dcf5bd0b 100644 --- a/anda/system/nvidia/nvidia-kmod-common/nvidia.conf +++ b/anda/system/nvidia/nvidia-kmod-common/nvidia.conf @@ -1,18 +1,21 @@ -# NOVA must be blacklisted as it conflicts with both these drivers and Nouveau. +# Nouvea/Nova must be blacklisted here as well beside from the initrd to avoid a +# delayed loading (for example on Optimus laptops where the Nvidia card is not +# driving the main display). +blacklist nouveau blacklist nova-core -# Make a soft dependency for nvidia-uvm as adding the module loading to -# /usr/lib/modules-load.d/nvidia-uvm.conf for systemd consumption, makes the +# Add soft dependencies for extra modules as adding the module loading to +# /usr/lib/modules-load.d/*.conf for systemd consumption, makes the # configuration file to be added to the initrd but not the module, throwing an # error on plymouth about not being able to find the module. # Ref: /usr/lib/dracut/modules.d/00systemd/module-setup.sh -# Even adding the module is not the correct thing, as we don't want it to be +# Even adding the modules is not the correct thing, as we don't want it to be # included in the initrd, so use this configuration file to specify the # dependency. -softdep nvidia post: nvidia-uvm +softdep nvidia post: nvidia-uvm nvidia-drm # Enable complete power management. From: # file:///usr/share/doc/nvidia-driver/html/powermanagement.html diff --git a/anda/system/nvidia/nvidia-kmod/closed/anda.hcl b/anda/system/nvidia/nvidia-kmod/closed/anda.hcl index b5ccca3615..ff85d8b22f 100644 --- a/anda/system/nvidia/nvidia-kmod/closed/anda.hcl +++ b/anda/system/nvidia/nvidia-kmod/closed/anda.hcl @@ -5,5 +5,6 @@ project "pkg" { labels { mock = 1 subrepo = "nvidia" + updbranch = 1 } -} \ No newline at end of file +} diff --git a/anda/system/nvidia/nvidia-kmod/closed/nvidia-kmod.spec b/anda/system/nvidia/nvidia-kmod/closed/nvidia-kmod.spec index 986688e74c..3f8f901dbf 100644 --- a/anda/system/nvidia/nvidia-kmod/closed/nvidia-kmod.spec +++ b/anda/system/nvidia/nvidia-kmod/closed/nvidia-kmod.spec @@ -4,7 +4,7 @@ %global debug_package %{nil} Name: nvidia-kmod -Version: 580.76.05 +Version: 580.105.08 Release: 1%?dist Summary: NVIDIA display driver kernel module Epoch: 3 diff --git a/anda/system/nvidia/nvidia-kmod/closed/update.rhai b/anda/system/nvidia/nvidia-kmod/closed/update.rhai index e5eff132c0..a50e623acd 100644 --- a/anda/system/nvidia/nvidia-kmod/closed/update.rhai +++ b/anda/system/nvidia/nvidia-kmod/closed/update.rhai @@ -1,3 +1,3 @@ -import "andax/nvidia.rhai" as nvidia; +import "andax/bump_extras.rhai" as bump; -rpm.version(nvidia::nvidia_driver_version()); +rpm.version(bump::madoguchi("nvidia-kmod-common", labels.branch)); diff --git a/anda/system/nvidia/nvidia-kmod/open/anda.hcl b/anda/system/nvidia/nvidia-kmod/open/anda.hcl index 2caf4b7e53..8b9559c1ff 100644 --- a/anda/system/nvidia/nvidia-kmod/open/anda.hcl +++ b/anda/system/nvidia/nvidia-kmod/open/anda.hcl @@ -5,5 +5,6 @@ project "pkg" { labels { mock = 1 subrepo = "nvidia" + updbranch = 1 } } diff --git a/anda/system/nvidia/nvidia-kmod/open/nvidia-open-kmod.spec b/anda/system/nvidia/nvidia-kmod/open/nvidia-open-kmod.spec index 685d1a3fa5..4029c6481d 100644 --- a/anda/system/nvidia/nvidia-kmod/open/nvidia-open-kmod.spec +++ b/anda/system/nvidia/nvidia-kmod/open/nvidia-open-kmod.spec @@ -4,7 +4,7 @@ %global debug_package %{nil} Name: nvidia-open-kmod -Version: 580.76.05 +Version: 580.105.08 Release: 1%?dist Summary: NVIDIA display driver kernel module Epoch: 3 diff --git a/anda/system/nvidia/nvidia-kmod/open/update.rhai b/anda/system/nvidia/nvidia-kmod/open/update.rhai index e5eff132c0..a50e623acd 100644 --- a/anda/system/nvidia/nvidia-kmod/open/update.rhai +++ b/anda/system/nvidia/nvidia-kmod/open/update.rhai @@ -1,3 +1,3 @@ -import "andax/nvidia.rhai" as nvidia; +import "andax/bump_extras.rhai" as bump; -rpm.version(nvidia::nvidia_driver_version()); +rpm.version(bump::madoguchi("nvidia-kmod-common", labels.branch)); diff --git a/anda/system/nvidia/nvidia-modprobe/anda.hcl b/anda/system/nvidia/nvidia-modprobe/anda.hcl index 12fa43ca14..86ef3ffe3d 100644 --- a/anda/system/nvidia/nvidia-modprobe/anda.hcl +++ b/anda/system/nvidia/nvidia-modprobe/anda.hcl @@ -4,5 +4,6 @@ project "pkg" { } labels = { subrepo = "nvidia" + weekly = 3 } -} \ No newline at end of file +} diff --git a/anda/system/nvidia/nvidia-modprobe/nvidia-modprobe.spec b/anda/system/nvidia/nvidia-modprobe/nvidia-modprobe.spec index 585e91954d..b420e26c65 100644 --- a/anda/system/nvidia/nvidia-modprobe/nvidia-modprobe.spec +++ b/anda/system/nvidia/nvidia-modprobe/nvidia-modprobe.spec @@ -1,5 +1,5 @@ Name: nvidia-modprobe -Version: 580.76.05 +Version: 580.105.08 Release: 1%?dist Summary: NVIDIA kernel module loader Epoch: 3 diff --git a/anda/system/nvidia/nvidia-persistenced/anda.hcl b/anda/system/nvidia/nvidia-persistenced/anda.hcl index 94fb3ebc91..ac2d60fe5e 100644 --- a/anda/system/nvidia/nvidia-persistenced/anda.hcl +++ b/anda/system/nvidia/nvidia-persistenced/anda.hcl @@ -4,5 +4,6 @@ project "pkg" { } labels = { subrepo = "nvidia" + weekly = 3 } -} \ No newline at end of file +} diff --git a/anda/system/nvidia/nvidia-persistenced/nvidia-persistenced.spec b/anda/system/nvidia/nvidia-persistenced/nvidia-persistenced.spec index 8e23ff3431..66f1e08c2d 100644 --- a/anda/system/nvidia/nvidia-persistenced/nvidia-persistenced.spec +++ b/anda/system/nvidia/nvidia-persistenced/nvidia-persistenced.spec @@ -1,5 +1,5 @@ Name: nvidia-persistenced -Version: 580.76.05 +Version: 580.105.08 Release: 1%?dist Summary: A daemon to maintain persistent software state in the NVIDIA driver Epoch: 3 diff --git a/anda/system/nvidia/nvidia-settings/anda.hcl b/anda/system/nvidia/nvidia-settings/anda.hcl index bfec503ed7..66e27123c6 100644 --- a/anda/system/nvidia/nvidia-settings/anda.hcl +++ b/anda/system/nvidia/nvidia-settings/anda.hcl @@ -4,5 +4,6 @@ project "pkg" { } labels = { subrepo = "nvidia" + weekly = 3 } -} \ No newline at end of file +} diff --git a/anda/system/nvidia/nvidia-settings/nvidia-settings.spec b/anda/system/nvidia/nvidia-settings/nvidia-settings.spec index 1e7090d36e..f40a9a85f9 100644 --- a/anda/system/nvidia/nvidia-settings/nvidia-settings.spec +++ b/anda/system/nvidia/nvidia-settings/nvidia-settings.spec @@ -1,5 +1,5 @@ Name: nvidia-settings -Version: 580.76.05 +Version: 580.105.08 Release: 1%?dist Summary: Configure the NVIDIA graphics driver Epoch: 3 diff --git a/anda/system/nvidia/nvidia-xconfig/anda.hcl b/anda/system/nvidia/nvidia-xconfig/anda.hcl index 0008900a30..f683caaff8 100644 --- a/anda/system/nvidia/nvidia-xconfig/anda.hcl +++ b/anda/system/nvidia/nvidia-xconfig/anda.hcl @@ -4,5 +4,6 @@ project "pkg" { } labels = { subrepo = "nvidia" + weekly = 3 } -} \ No newline at end of file +} diff --git a/anda/system/nvidia/nvidia-xconfig/nvidia-xconfig.spec b/anda/system/nvidia/nvidia-xconfig/nvidia-xconfig.spec index 07eb0e284a..3fe00dbcb9 100644 --- a/anda/system/nvidia/nvidia-xconfig/nvidia-xconfig.spec +++ b/anda/system/nvidia/nvidia-xconfig/nvidia-xconfig.spec @@ -1,5 +1,5 @@ Name: nvidia-xconfig -Version: 580.76.05 +Version: 580.105.08 Release: 1%?dist Summary: NVIDIA X configuration file editor Epoch: 3 diff --git a/anda/system/opentabletdriver-nightly/opentabletdriver-nightly.spec b/anda/system/opentabletdriver-nightly/opentabletdriver-nightly.spec index cf21027be3..b2aba4122b 100644 --- a/anda/system/opentabletdriver-nightly/opentabletdriver-nightly.spec +++ b/anda/system/opentabletdriver-nightly/opentabletdriver-nightly.spec @@ -1,7 +1,7 @@ -%global commit d4150dea3c0e1f60177b3bb47faea114ba221663 +%global commit 1e0ee7079ab8227441359da5912644de4f4ad395 %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global commit_date 20250125 -%global ver 0.6.5.0 +%global commit_date 20251117 +%global ver 0.6.6.2 # We aren't using Mono but RPM expected Mono %global __requires_exclude_from ^/usr/lib/opentabletdriver/.*$ diff --git a/anda/system/opentabletdriver/opentabletdriver.spec b/anda/system/opentabletdriver/opentabletdriver.spec index aabc5673a8..4d8e207818 100644 --- a/anda/system/opentabletdriver/opentabletdriver.spec +++ b/anda/system/opentabletdriver/opentabletdriver.spec @@ -9,8 +9,8 @@ %global dotnet_runtime_version 8.0 Name: opentabletdriver -Version: 0.6.5.1 -Release: 2%?dist +Version: 0.6.6.2 +Release: 1%?dist Summary: A cross-platform open source tablet driver License: LGPLv3 URL: https://github.com/OpenTabletDriver/OpenTabletDriver diff --git a/anda/system/readymade/git/anda.hcl b/anda/system/readymade/git/anda.hcl index e8898266d1..7ab3509545 100644 --- a/anda/system/readymade/git/anda.hcl +++ b/anda/system/readymade/git/anda.hcl @@ -3,5 +3,6 @@ project pkg { spec = "readymade-git.spec" } labels { + nightly = 1 } } diff --git a/anda/system/readymade/git/readymade-git.spec b/anda/system/readymade/git/readymade-git.spec index 06a968b425..e4b56e0d07 100644 --- a/anda/system/readymade/git/readymade-git.spec +++ b/anda/system/readymade/git/readymade-git.spec @@ -1,7 +1,7 @@ -%global commit 9846c9a84b18e7fff432979089ccb0066cfde413 -%global commit_date 20250827 +%global commit 40d07f6d1e34c5ecaf958d01a5ddee8d9e1fefcf +%global commit_date 20251111 %global shortcommit %(c=%{commit}; echo ${c:0:7}) - +%global crate readymade Name: readymade-git Version: %commit_date.%shortcommit Release: 1%?dist @@ -13,7 +13,12 @@ Source1: https://github.com/FyraLabs/rdms_proc_macros/archive/HEAD.tar.gz BuildRequires: anda-srpm-macros rust-packaging mold BuildRequires: pkgconfig(libhelium-1) BuildRequires: clang-devel +BuildRequires: gcc BuildRequires: cmake +BuildRequires: glibc-all-langpacks +# We'll need cryptsetup to unlock disks for now +Requires: cryptsetup +Recommends: readymade-config Conflicts: readymade Obsoletes: readymade-nightly < 20250502.4dc78ec-3 @@ -53,6 +58,7 @@ ln -sf %{_datadir}/applications/com.fyralabs.Readymade.desktop %{buildroot}%{_da %files config-ultramarine %_sysconfdir/readymade.toml +%_datadir/readymade/* %files @@ -63,4 +69,3 @@ ln -sf %{_datadir}/applications/com.fyralabs.Readymade.desktop %{buildroot}%{_da %_datadir/applications/liveinst.desktop %ghost %_datadir/readymade %_datadir/icons/hicolor/scalable/apps/com.fyralabs.Readymade.svg - diff --git a/anda/system/readymade/stable/readymade.spec b/anda/system/readymade/stable/readymade.spec index 91622a69bd..d588f7e509 100644 --- a/anda/system/readymade/stable/readymade.spec +++ b/anda/system/readymade/stable/readymade.spec @@ -1,5 +1,6 @@ +%global crate readymade Name: readymade -Version: 0.12.5 +Version: 0.12.6 Release: 1%?dist Summary: Install ready-made distribution images! License: GPL-3.0-or-later diff --git a/anda/system/rtl8821cu/akmod/rtl8821cu-kmod.spec b/anda/system/rtl8821cu/akmod/rtl8821cu-kmod.spec index 3466e5e331..f47ef34615 100644 --- a/anda/system/rtl8821cu/akmod/rtl8821cu-kmod.spec +++ b/anda/system/rtl8821cu/akmod/rtl8821cu-kmod.spec @@ -1,6 +1,6 @@ -%global commit 945c687aa1e62ee0b95b1ddd1dbfdbd513c30152 +%global commit 3d1fcf4bc838542ceb03b0b4e9e40600720cf6ae %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global commit_date 20250722 +%global commit_date 20251010 %global ver 5.12.0.4 %global modulename rtl8821cu %global git_name 8821cu-20210916 diff --git a/anda/system/rtl8821cu/dkms/dkms-rtl8821cu.spec b/anda/system/rtl8821cu/dkms/dkms-rtl8821cu.spec index ac4c9fc36b..7520b4b481 100644 --- a/anda/system/rtl8821cu/dkms/dkms-rtl8821cu.spec +++ b/anda/system/rtl8821cu/dkms/dkms-rtl8821cu.spec @@ -1,6 +1,6 @@ -%global commit 945c687aa1e62ee0b95b1ddd1dbfdbd513c30152 +%global commit 3d1fcf4bc838542ceb03b0b4e9e40600720cf6ae %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global commit_date 20250722 +%global commit_date 20251010 %global ver 5.12.0.4 %global modulename rtl8821cu %global git_name 8821cu-20210916 diff --git a/anda/system/rtl8821cu/kmod-common/anda.hcl b/anda/system/rtl8821cu/kmod-common/anda.hcl index 2e9d418795..202049137e 100644 --- a/anda/system/rtl8821cu/kmod-common/anda.hcl +++ b/anda/system/rtl8821cu/kmod-common/anda.hcl @@ -4,6 +4,6 @@ project pkg { spec = "rtl8821cu-kmod-common.spec" } labels { - nightly = "1" + nightly = 1 } } diff --git a/anda/system/rtl8821cu/kmod-common/rtl8821cu-kmod-common.spec b/anda/system/rtl8821cu/kmod-common/rtl8821cu-kmod-common.spec index e4fb7e8c3a..c0793ac4f0 100644 --- a/anda/system/rtl8821cu/kmod-common/rtl8821cu-kmod-common.spec +++ b/anda/system/rtl8821cu/kmod-common/rtl8821cu-kmod-common.spec @@ -1,6 +1,6 @@ -%global commit 945c687aa1e62ee0b95b1ddd1dbfdbd513c30152 +%global commit 3d1fcf4bc838542ceb03b0b4e9e40600720cf6ae %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global commit_date 20250722 +%global commit_date 20251010 %global ver 5.12.0.4 %global modulename rtl8821cu %global git_name 8821cu-20210916 diff --git a/anda/system/scx-scheds/nightly/scx-scheds-nightly.spec b/anda/system/scx-scheds/nightly/scx-scheds-nightly.spec index bde1bfb4c4..c68fb529e2 100644 --- a/anda/system/scx-scheds/nightly/scx-scheds-nightly.spec +++ b/anda/system/scx-scheds/nightly/scx-scheds-nightly.spec @@ -1,7 +1,8 @@ -%global commit dc12a8468e388f68350657fb6f26683bf588cc4e +%global commit 06dd28f95d7a3b33accda7a18740e73da8f97eb9 %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global commitdate 20250901 -%global ver 1.0.15 +%global commitdate 20251120 +%global ver 1.0.18 +%undefine __brp_mangle_shebangs Name: scx-scheds-nightly Version: %{ver}^%{commitdate}.git.%{shortcommit} @@ -32,6 +33,8 @@ BuildRequires: rust BuildRequires: systemd BuildRequires: systemd-rpm-macros BuildRequires: zlib-ng-compat +Requires: (scx-tools or scx-tools-nightly) +Suggests: scx-tools-nightly Requires: elfutils-libelf Requires: jq Requires: libseccomp @@ -70,42 +73,31 @@ License: GPL-2.0-only %cargo_prep_online %build -%meson \ - -Dsystemd=enabled \ - -Dopenrc=disabled -%meson_build - +%{cargo_build -a} \ + --workspace \ + --exclude scx_rlfifo \ + --exclude scx_mitosis \ + --exclude scx_wd40 \ + --exclude xtask \ + --exclude scxcash \ + --exclude vmlinux_docify \ + --exclude scx_arena_selftests %install -%meson_install +find target/rpm \ + -maxdepth 1 -type f -executable ! -name '*.so' \ + -exec install -Dm755 -t %{buildroot}%{_bindir} {} + + +install -Dm755 target/rpm/*.so -t %{buildroot}%{_libdir} %{cargo_license_online} > LICENSE.dependencies -%post -%systemd_post scx_loader.service -%systemd_post scx.service - -%preun -%systemd_preun scx_loader.service -%systemd_preun scx.service - -%postun -%systemd_postun_with_restart scx_loader.service -%systemd_postun_with_restart scx.service - %files %doc OVERVIEW.md %doc README.md %license LICENSE %license LICENSE.dependencies -%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/default/scx %{_bindir}/scx* -%{_bindir}/vmlinux_docify -%{_unitdir}/scx_loader.service -%{_unitdir}/scx.service -%{_datadir}/dbus-1/system.d/org.scx.Loader.conf -%{_datadir}/dbus-1/system-services/org.scx.Loader.service -%attr(0644,root,root) %config(noreplace) %{_datadir}/scx_loader/config.toml %changelog * Sun Jun 15 2025 Gilver E. - 1.0.13^20250612.git.c1507b0-1 diff --git a/anda/system/scx-scheds/stable/scx-scheds.spec b/anda/system/scx-scheds/stable/scx-scheds.spec index 0726e0e5e8..65b4a5eb63 100644 --- a/anda/system/scx-scheds/stable/scx-scheds.spec +++ b/anda/system/scx-scheds/stable/scx-scheds.spec @@ -1,7 +1,9 @@ +%undefine __brp_mangle_shebangs + Name: scx-scheds -Version: 1.0.15 -Release: 1%?dist -Summary: sched_ext schedulers and tools +Version: 1.0.18 +Release: 2%?dist +Summary: sched_ext schedulers SourceLicense: GPL-2.0-only License: ((Apache-2.0 OR MIT) AND BSD-3-Clause) AND ((MIT OR Apache-2.0) AND Unicode-3.0) AND (0BSD OR MIT OR Apache-2.0) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND Apache-2.0 AND (BSD-2-Clause OR Apache-2.0 OR MIT) AND BSD-2-Clause AND BSD-3-Clause AND GPL-2.0-only AND ISC AND (LGPL-2.1-only OR BSD-2-Clause) AND LGPL-2.1 AND (MIT OR Apache-2.0 OR LGPL-2.1-or-later) AND (MIT OR Apache-2.0) AND (MIT OR Zlib OR Apache-2.0) AND MIT AND (MPL-2.0 OR MIT OR Apache-2.0) AND MPL-2.0-only and MPL-2.0-or-later AND (Unlicense OR MIT) AND Zlib URL: https://github.com/sched-ext/scx @@ -27,6 +29,8 @@ BuildRequires: rust BuildRequires: systemd BuildRequires: systemd-rpm-macros BuildRequires: zlib-ng-compat +Requires: (scx-tools or scx-tools-nightly) +Suggests: scx-tools Requires: elfutils-libelf Requires: jq Requires: libseccomp @@ -38,13 +42,14 @@ Conflicts: scx_layered Conflicts: scx_rustland Conflicts: scx_rusty Conflicts: scx-scheds-git +Conflicts: scx-scheds-nightly Provides: rust-scx_utils-devel Provides: scx_c_schedulers Provides: scxctl = %{version} Provides: scx_layered Provides: scx_rustland Provides: scx_rusty -Obsoletes: scxctl >= 0.3.4 +Obsoletes: scxctl <= 0.3.4 Packager: Gilver E. %description @@ -62,41 +67,31 @@ License: GPL-2.0-only %cargo_prep_online %build -%meson \ - -Dsystemd=enabled \ - -Dopenrc=disabled \ - -Dlibalpm=disabled -%meson_build +%{cargo_build -a} \ + --workspace \ + --exclude scx_rlfifo \ + --exclude scx_mitosis \ + --exclude scx_wd40 \ + --exclude xtask \ + --exclude scxcash \ + --exclude vmlinux_docify \ + --exclude scx_arena_selftests %install -%meson_install +find target/rpm \ + -maxdepth 1 -type f -executable ! -name '*.so' \ + -exec install -Dm755 -t %{buildroot}%{_bindir} {} + + +install -Dm755 target/rpm/*.so -t %{buildroot}%{_libdir} %{cargo_license_online} > LICENSE.dependencies -%post -%systemd_post scx_loader.service -%systemd_post scx.service - -%preun -%systemd_preun scx_loader.service -%systemd_preun scx.service - -%postun -%systemd_postun_with_restart scx_loader.service -%systemd_postun_with_restart scx.service - %files %doc OVERVIEW.md %doc README.md %license LICENSE %license LICENSE.dependencies -%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/default/scx %{_bindir}/scx* -%{_bindir}/vmlinux_docify -%{_unitdir}/scx_loader.service -%{_unitdir}/scx.service -%{_datadir}/dbus-1/system.d/org.scx.Loader.conf -%{_datadir}/dbus-1/system-services/org.scx.Loader.service %changelog * Sun Jun 15 2025 Gilver E. - 1.0.13-1 diff --git a/anda/system/scx-tools/nightly/anda.hcl b/anda/system/scx-tools/nightly/anda.hcl new file mode 100644 index 0000000000..10de38ca82 --- /dev/null +++ b/anda/system/scx-tools/nightly/anda.hcl @@ -0,0 +1,8 @@ +project pkg { + rpm { + spec = "scx-tools-nightly.spec" + } + labels { + nightly = 1 + } +} diff --git a/anda/system/scx-tools/nightly/scx-tools-nightly.spec b/anda/system/scx-tools/nightly/scx-tools-nightly.spec new file mode 100644 index 0000000000..3188208b2a --- /dev/null +++ b/anda/system/scx-tools/nightly/scx-tools-nightly.spec @@ -0,0 +1,88 @@ +%global commit 0bacdf766269592d82c7e5f847e541af56f4ed26 +%global shortcommit %(c=%{commit}; echo ${c:0:7}) +%global commitdate 20251120 +%global ver 1.0.18 +%global appid com.sched_ext.scx +%global developer "sched-ext Contributors" +%global org "com.sched_ext" + +Name: scx-tools-nightly +Version: %{ver}^%{commitdate}.git.%{shortcommit} +Release: 1%?dist +Summary: Sched_ext Tools +License: ((MIT OR Apache-2.0) AND Unicode-3.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND GPL-2.0-only AND (MIT OR Apache-2.0 OR LGPL-2.1-or-later) AND (MIT OR Apache-2.0) AND MIT AND MPL-2.0 AND (Unlicense OR MIT) AND (Zlib OR Apache-2.0 OR MIT) +SourceLicense: GPL-2.0-only +URL: https://github.com/sched-ext/scx-loader +Source0: %{url}/archive/%{commit}/%{commit}.tar.gz +BuildRequires: anda-srpm-macros +BuildRequires: bpftool +BuildRequires: cargo +BuildRequires: cargo-rpm-macros +BuildRequires: clang >= 17 +BuildRequires: gcc +BuildRequires: git +BuildRequires: libseccomp-devel +BuildRequires: lld >= 17 +BuildRequires: llvm >= 17 +BuildRequires: mold +BuildRequires: python3 +BuildRequires: rust +BuildRequires: systemd +BuildRequires: systemd-rpm-macros +Requires: (scx-scheds or scx-scheds-nightly) +Suggests: scx-scheds-nightly +Obsoletes: scxctl <= 0.3.4 +Provides: scxctl = %{evr} +Conflicts: scx-tools +Packager: Gilver E. + +%description +scx_loader: A D-Bus interface for managing sched_ext schedulers + +%prep +%autosetup -n scx-loader-%{commit} +%cargo_prep_online + +%build +%{cargo_build -a} \ + --workspace + +%install +find target/rpm \ + -maxdepth 1 -type f -executable ! -name '*.so' ! -name 'xtask' \ + -exec install -Dm755 -t %{buildroot}%{_bindir} {} + + +# Install runtime assets via xtask +./target/rpm/xtask install --destdir %{buildroot} + +install -Dm755 target/rpm/*.so -t %{buildroot}%{_libdir} || : + +%{cargo_license_online} > LICENSE.dependencies + +%terra_appstream + +%post +%systemd_post scx_loader.service + +%preun +%systemd_preun scx_loader.service + +%postun +%systemd_postun_with_restart scx_loader.service + +%files +%license LICENSE +%license LICENSE.dependencies +%doc README.md +%{_bindir}/scx* +%{_unitdir}/scx_loader.service +%{_datadir}/dbus-1/interfaces/org.scx.Loader.xml +%{_datadir}/dbus-1/system-services/org.scx.Loader.service +%{_datadir}/dbus-1/system.d/org.scx.Loader.conf +%{_datadir}/polkit-1/actions/org.scx.Loader.policy +%config(noreplace) %{_datadir}/scx_loader/config.toml +%{_metainfodir}/%{appid}.metainfo.xml + +%changelog +* Sun Nov 16 2025 Gilver E. - 1.0.18^20251114.git.d830ef7-1 +- Initial package diff --git a/anda/system/scx-tools/nightly/update.rhai b/anda/system/scx-tools/nightly/update.rhai new file mode 100644 index 0000000000..acab373af9 --- /dev/null +++ b/anda/system/scx-tools/nightly/update.rhai @@ -0,0 +1,8 @@ +rpm.global("commit", gh_commit("sched-ext/scx-loader")); +if rpm.changed() { + rpm.release(); + rpm.global("commitdate", date()); + let v = gh("sched-ext/scx-loader"); + v.crop(1); + rpm.global("ver", v); +} diff --git a/anda/system/scx-tools/stable/anda.hcl b/anda/system/scx-tools/stable/anda.hcl new file mode 100644 index 0000000000..c5223e522e --- /dev/null +++ b/anda/system/scx-tools/stable/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "scx-tools.spec" + } +} diff --git a/anda/system/scx-tools/stable/scx-tools.spec b/anda/system/scx-tools/stable/scx-tools.spec new file mode 100644 index 0000000000..31514cb3ac --- /dev/null +++ b/anda/system/scx-tools/stable/scx-tools.spec @@ -0,0 +1,84 @@ +%global appid com.sched_ext.scx +%global developer "sched-ext Contributors" +%global org "com.sched_ext" + +Name: scx-tools +Version: 1.0.18 +Release: 1%{?dist} +Summary: Sched_ext Tools +License: ((MIT OR Apache-2.0) AND Unicode-3.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND GPL-2.0-only AND (MIT OR Apache-2.0 OR LGPL-2.1-or-later) AND (MIT OR Apache-2.0) AND MIT AND MPL-2.0 AND (Unlicense OR MIT) AND (Zlib OR Apache-2.0 OR MIT) +SourceLicense: GPL-2.0-only +URL: https://github.com/sched-ext/scx-loader +Source0: %{url}/archive/refs/tags/v%{version}.tar.gz +BuildRequires: anda-srpm-macros +BuildRequires: bpftool +BuildRequires: cargo +BuildRequires: cargo-rpm-macros +BuildRequires: clang >= 17 +BuildRequires: gcc +BuildRequires: git +BuildRequires: libseccomp-devel +BuildRequires: lld >= 17 +BuildRequires: llvm >= 17 +BuildRequires: mold +BuildRequires: python3 +BuildRequires: rust +BuildRequires: systemd +BuildRequires: systemd-rpm-macros +Requires: (scx-scheds or scx-scheds-nightly) +Suggests: scx-scheds +Obsoletes: scxctl <= 0.3.4 +Provides: scxctl = %{evr} +Conflicts: scx-tools-git +Conflicts: scx-tools-nightly +Packager: Gilver E. + +%description +scx_loader: A D-Bus interface for managing sched_ext schedulers + +%prep +%autosetup -n scx-loader-%{version} +%cargo_prep_online + +%build +%{cargo_build -a} \ + --workspace + +%install +find target/rpm \ + -maxdepth 1 -type f -executable ! -name '*.so' ! -name 'xtask' \ + -exec install -Dm755 -t %{buildroot}%{_bindir} {} + + +# Install runtime assets via xtask +./target/rpm/xtask install --destdir %{buildroot} + +install -Dm755 target/rpm/*.so -t %{buildroot}%{_libdir} || : + +%{cargo_license_online} > LICENSE.dependencies + +%terra_appstream + +%post +%systemd_post scx_loader.service + +%preun +%systemd_preun scx_loader.service + +%postun +%systemd_postun_with_restart scx_loader.service + +%files +%license LICENSE +%license LICENSE.dependencies +%doc README.md +%{_bindir}/scx* +%{_unitdir}/scx_loader.service +%{_datadir}/dbus-1/system-services/org.scx.Loader.service +%{_datadir}/dbus-1/system.d/org.scx.Loader.conf +%{_datadir}/polkit-1/actions/org.scx.Loader.policy +%config(noreplace) %{_datadir}/scx_loader/config.toml +%{_metainfodir}/%{appid}.metainfo.xml + +%changelog +* Sun Nov 16 2025 Gilver E. - 1.0.18-1 +- Initial package diff --git a/anda/system/scx-tools/stable/update.rhai b/anda/system/scx-tools/stable/update.rhai new file mode 100644 index 0000000000..af8768b383 --- /dev/null +++ b/anda/system/scx-tools/stable/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("sched-ext/scx-loader")); diff --git a/anda/system/submarine/submarine.spec b/anda/system/submarine/submarine.spec index 3cc428b943..d412590ae6 100644 --- a/anda/system/submarine/submarine.spec +++ b/anda/system/submarine/submarine.spec @@ -9,7 +9,7 @@ Name: submarine -Version: 0.3.0 +Version: 0.4.1 Release: 1%?dist Summary: Experimental bootloader for ChomeOS's depthcharge License: GPL-3.0 diff --git a/anda/system/supergfxctl/anda.hcl b/anda/system/supergfxctl/anda.hcl new file mode 100644 index 0000000000..7b76ffb458 --- /dev/null +++ b/anda/system/supergfxctl/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "supergfxctl.spec" + } +} diff --git a/anda/system/supergfxctl/supergfxctl.spec b/anda/system/supergfxctl/supergfxctl.spec new file mode 100644 index 0000000000..29829af00b --- /dev/null +++ b/anda/system/supergfxctl/supergfxctl.spec @@ -0,0 +1,56 @@ +Name: supergfxctl +Version: 5.2.7 +Release: 1%?dist +Summary: GPU Utility for ASUS ROG Laptops +URL: https://gitlab.com/asus-linux/supergfxctl +Source0: %url/-/archive/%{version}/supergfxctl-%{version}.tar.gz +SourceLicense: MPL-2.0 +License: ((MIT OR Apache-2.0) AND Unicode-3.0) AND (0BSD OR MIT OR Apache-2.0) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND MIT AND (MIT OR Apache-2.0) AND (MIT OR Zlib OR Apache-2.0) AND MPL-2.0 AND (Unlicense OR MIT) +BuildRequires: cargo anda-srpm-macros cargo-rpm-macros mold rust-udev-devel +BuildRequires: rpm_macro(systemd_post) +Packager: Its-J + +%description +%{summary}. + +%prep +%autosetup -n supergfxctl-%{version} +%cargo_prep_online + +%build +%cargo_license_summary_online +%{cargo_license_online} > LICENSE.dependencies +%cargo_build -f "cli daemon" + +%install +install -Dm 0755 target/rpm/supergfxd target/rpm/supergfxctl -t %buildroot%_bindir +install -Dm 0644 data/90-supergfxd-nvidia-pm.rules %{buildroot}%{_udevrulesdir}/90-supergfxd-nvidia-pm.rules +install -Dm 0644 data/org.supergfxctl.Daemon.conf %{buildroot}%{_datadir}/dbus-1/system.d/org.supergfxctl.Daemon.conf +install -Dm 0644 data/supergfxd.preset %{buildroot}%{_presetdir}/99-supergfxd.preset +install -Dm 0644 data/90-nvidia-screen-G05.conf %{buildroot}%{_datadir}/X11/xorg.conf.d/90-nvidia-screen-G05.conf +install -Dm 0644 data/supergfxd.service -t %buildroot%_unitdir + +%post +%systemd_post supergfxd.service + +%preun +%systemd_preun supergfxd.service + +%postun +%systemd_postun_with_restart supergfxd.service + +%files +%license LICENSE +%doc README.md +%{_bindir}/supergfxctl +%{_bindir}/supergfxd +%{_udevrulesdir}/90-supergfxd-nvidia-pm.rules +%{_datadir}/X11/xorg.conf.d/90-nvidia-screen-G05.conf +%{_datadir}/dbus-1/system.d/org.supergfxctl.Daemon.conf +%{_unitdir}/supergfxd.service +# We should not be installing .preset files (errors if not listed) +%ghost %{_presetdir}/99-supergfxd.preset + +%changelog +* Sun Oct 26 2025 Its-J +- Package SuperGFXctl diff --git a/anda/system/supergfxctl/update.rhai b/anda/system/supergfxctl/update.rhai new file mode 100644 index 0000000000..ada985a118 --- /dev/null +++ b/anda/system/supergfxctl/update.rhai @@ -0,0 +1,3 @@ +let v = gitlab_tag("bcdca4be"); +v.replace("-", "~"); +rpm.version(v); diff --git a/anda/system/surface-dtx-daemon/surface-dtx-daemon.spec b/anda/system/surface-dtx-daemon/surface-dtx-daemon.spec index 75d319178e..799a2b1102 100644 --- a/anda/system/surface-dtx-daemon/surface-dtx-daemon.spec +++ b/anda/system/surface-dtx-daemon/surface-dtx-daemon.spec @@ -1,5 +1,5 @@ %global debug_package %{nil} -%global ver v0.3.9-1 +%global ver v0.3.10-1 %global ver2 %(echo %{ver} | sed 's/^v//') Name: terra-surface-dtx-daemon diff --git a/anda/system/usbio-drivers/akmod/intel-usbio-kmod.spec b/anda/system/usbio-drivers/akmod/intel-usbio-kmod.spec index 827958604f..5a7a0fbe02 100644 --- a/anda/system/usbio-drivers/akmod/intel-usbio-kmod.spec +++ b/anda/system/usbio-drivers/akmod/intel-usbio-kmod.spec @@ -1,8 +1,8 @@ %global buildforkernels akmod %global debug_package %{nil} -%global commit 4fb690c6d15a81c492954636c2db396cb700a119 +%global commit ee221ecae757d43ab3fb39433f389373b2026109 %global shortcommit %(c=%{commit}; echo ${c:0:7}) -%global commit_date 20241210 +%global commit_date 20251031 %global modulename intel-usbio Name: %{modulename}-kmod diff --git a/anda/system/usbio-drivers/dkms/dkms-intel-usbio.spec b/anda/system/usbio-drivers/dkms/dkms-intel-usbio.spec index 4996afbfa9..d8933e6dfa 100644 --- a/anda/system/usbio-drivers/dkms/dkms-intel-usbio.spec +++ b/anda/system/usbio-drivers/dkms/dkms-intel-usbio.spec @@ -1,12 +1,12 @@ -%global commit 4fb690c6d15a81c492954636c2db396cb700a119 +%global commit ee221ecae757d43ab3fb39433f389373b2026109 %global shortcommit %{sub %{commit} 1 7} -%global commit_date 20250312 +%global commit_date 20251031 %global debug_package %{nil} %global modulename intel-usbio Name: dkms-%{modulename} Version: 0^%{commit_date}git.%{shortcommit} -Release: 1%{?dist} +Release: 1%?dist Summary: Kernel drivers for the USBIO Extension License: GPL-2.0-only URL: https://github.com/intel/usbio-drivers diff --git a/anda/system/usbio-drivers/kmod-common/intel-usbio-drivers.spec b/anda/system/usbio-drivers/kmod-common/intel-usbio-drivers.spec index bb9a354cbc..497731a19b 100644 --- a/anda/system/usbio-drivers/kmod-common/intel-usbio-drivers.spec +++ b/anda/system/usbio-drivers/kmod-common/intel-usbio-drivers.spec @@ -1,11 +1,11 @@ -%global commit 4fb690c6d15a81c492954636c2db396cb700a119 +%global commit ee221ecae757d43ab3fb39433f389373b2026109 %global shortcommit %{sub %{commit} 1 7} -%global commit_date 20250312 +%global commit_date 20251031 %global debug_package %{nil} Name: dkms-%{modulename} Version: 0^%{commit_date}git.%{shortcommit} -Release: 1%{?dist} +Release: 1%?dist Summary: Common files for the USBIO drivers License: GPL-2.0-only URL: https://github.com/intel/usbio-drivers diff --git a/anda/system/uutils-coreutils-replace/uutils-coreutils-replace.spec b/anda/system/uutils-coreutils-replace/uutils-coreutils-replace.spec index b8bd2c1674..69d27f3644 100644 --- a/anda/system/uutils-coreutils-replace/uutils-coreutils-replace.spec +++ b/anda/system/uutils-coreutils-replace/uutils-coreutils-replace.spec @@ -5,7 +5,7 @@ %endif Name: uutils-coreutils-replace -Version: 0.1.0 +Version: 0.4.0 Release: 1%?dist Summary: Cross-platform Rust rewrite of the GNU coreutils License: MIT diff --git a/anda/system/v4l2-relayd/v4l2-relayd.spec b/anda/system/v4l2-relayd/v4l2-relayd.spec index b3e48a1f28..edb5cc11e2 100644 --- a/anda/system/v4l2-relayd/v4l2-relayd.spec +++ b/anda/system/v4l2-relayd/v4l2-relayd.spec @@ -1,5 +1,5 @@ -%global commit fda071b434a9978c754f557474812aa5d48b24ba -%global commit_date 20250616 +%global commit d6ec36aae87e765eddef8308f0f58c7b5be95ad7 +%global commit_date 20251028 %global shortcommit %(c=%{commit}; echo ${c:0:7}) Name: v4l2-relayd diff --git a/anda/system/v4l2loopback/akmod/v4l2loopback-kmod.spec b/anda/system/v4l2loopback/akmod/v4l2loopback-kmod.spec index 395340a22a..c67731d13d 100644 --- a/anda/system/v4l2loopback/akmod/v4l2loopback-kmod.spec +++ b/anda/system/v4l2loopback/akmod/v4l2loopback-kmod.spec @@ -17,7 +17,7 @@ This module allows you to create \"virtual video devices.\" Normal \(v4l2\) appl Name: %{modulename}-kmod Summary: Kernel module (kmod) for V4L2 loopback devices -Version: 0.15.1 +Version: 0.15.2 Release: 1%?dist License: GPL-2.0-or-later URL: https://github.com/v4l2loopback/v4l2loopback diff --git a/anda/system/v4l2loopback/dkms/dkms-v4l2loopback.spec b/anda/system/v4l2loopback/dkms/dkms-v4l2loopback.spec index 7bd955246d..34435b0cad 100644 --- a/anda/system/v4l2loopback/dkms/dkms-v4l2loopback.spec +++ b/anda/system/v4l2loopback/dkms/dkms-v4l2loopback.spec @@ -4,7 +4,7 @@ This module allows you to create \"virtual video devices.\" Normal \(v4l2\) applications will read these devices as if they were ordinary video devices, but the video will not be read from e.g. a capture card but instead it is generated by another application.} Name: dkms-%{modulename} -Version: 0.15.1 +Version: 0.15.2 Release: 1%?dist Summary: Utils for V4L2 loopback devices License: GPL-2.0-or-later diff --git a/anda/system/v4l2loopback/kmod-common/v4l2loopback.spec b/anda/system/v4l2loopback/kmod-common/v4l2loopback.spec index d0dc6041e6..6a134caf3f 100644 --- a/anda/system/v4l2loopback/kmod-common/v4l2loopback.spec +++ b/anda/system/v4l2loopback/kmod-common/v4l2loopback.spec @@ -5,7 +5,7 @@ Name: v4l2loopback Summary: Utils for V4L2 loopback devices -Version: 0.15.1 +Version: 0.15.2 Release: 1%?dist License: GPL-2.0-or-later URL: https://github.com/v4l2loopback/v4l2loopback diff --git a/anda/system/wine/dev/wine-dev.spec b/anda/system/wine/dev/wine-dev.spec index ffedf637f5..b7fa804e00 100644 --- a/anda/system/wine/dev/wine-dev.spec +++ b/anda/system/wine/dev/wine-dev.spec @@ -9,7 +9,7 @@ %global _prefix /usr/share/wine-dev %global srcmajor 10.x # Make this as a variable instead in case of WINE RCs -%global ver wine-10.14 +%global ver wine-10.19 %global cleanver %(echo %{ver} | sed 's/v//g;s/wine-//g') # This is unfortunate but a lot of Fedora's/SUSE's hardening flags break WINE diff --git a/anda/system/wine/staging/wine-staging.spec b/anda/system/wine/staging/wine-staging.spec index d89ebe8ade..a289858a24 100644 --- a/anda/system/wine/staging/wine-staging.spec +++ b/anda/system/wine/staging/wine-staging.spec @@ -18,7 +18,7 @@ Name: wine-staging -Version: 10.14 +Version: 10.19 Release: 1%?dist Epoch: 1 Summary: WINE Is Not An Emulator - runs MS Windows programs diff --git a/anda/system/xone/stable/akmod/xone-kmod.spec b/anda/system/xone/stable/akmod/xone-kmod.spec index 3b1a9509f9..381c5de2da 100644 --- a/anda/system/xone/stable/akmod/xone-kmod.spec +++ b/anda/system/xone/stable/akmod/xone-kmod.spec @@ -3,7 +3,7 @@ %global modulename xone Name: %{modulename}-kmod -Version: 0.4.3 +Version: 0.4.11 Release: 1%?dist %if 0%{?fedora} <= 43 || 0%{?rhel} <= 10 Epoch: 2 diff --git a/anda/system/xone/stable/dkms/dkms-xone.spec b/anda/system/xone/stable/dkms/dkms-xone.spec index 11ebbb4316..0b83ddcbf8 100644 --- a/anda/system/xone/stable/dkms/dkms-xone.spec +++ b/anda/system/xone/stable/dkms/dkms-xone.spec @@ -2,7 +2,7 @@ %global modulename xone Name: dkms-%{modulename} -Version: 0.4.3 +Version: 0.4.11 Release: 1%?dist %if 0%{?fedora} <= 43 || 0%{?rhel} <= 10 Epoch: 2 diff --git a/anda/system/xone/stable/kmod-common/xone.spec b/anda/system/xone/stable/kmod-common/xone.spec index ae291c72e0..378cd86485 100644 --- a/anda/system/xone/stable/kmod-common/xone.spec +++ b/anda/system/xone/stable/kmod-common/xone.spec @@ -3,7 +3,7 @@ %global firmware_hash1 080ce4091e53a4ef3e5fe29939f51fd91f46d6a88be6d67eb6e99a5723b3a223 Name: xone -Version: 0.4.3 +Version: 0.4.11 Release: 1%?dist %if 0%{?fedora} <= 43 || 0%{?rhel} <= 10 Epoch: 2 diff --git a/anda/system/zenergy/akmod/anda.hcl b/anda/system/zenergy/akmod/anda.hcl new file mode 100644 index 0000000000..4c61e3c13f --- /dev/null +++ b/anda/system/zenergy/akmod/anda.hcl @@ -0,0 +1,10 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "zenergy-kmod.spec" + } + labels { + mock = 1 + nightly = 1 + } +} diff --git a/anda/system/zenergy/akmod/update.rhai b/anda/system/zenergy/akmod/update.rhai new file mode 100644 index 0000000000..ae37ba7dd5 --- /dev/null +++ b/anda/system/zenergy/akmod/update.rhai @@ -0,0 +1,5 @@ +rpm.global("commit", gh_commit("BoukeHaarsma23/zenergy")); +if rpm.changed() { + rpm.release(); + rpm.global("commitdate", date()); +} diff --git a/anda/system/zenergy/akmod/zenergy-kmod.spec b/anda/system/zenergy/akmod/zenergy-kmod.spec new file mode 100644 index 0000000000..21f642fca4 --- /dev/null +++ b/anda/system/zenergy/akmod/zenergy-kmod.spec @@ -0,0 +1,72 @@ +# The reason why this package is a separate from the main one despite using the same sources +# is because akmods use the srpm to build the kmod package, and if the kmod package is included +# in the main package, akmods will reinstall the userspace package every time the kernel is updated. + +%if 0%{?fedora} +%global buildforkernels akmod +%global debug_package %{nil} +%endif + +%global commit 58f2fda7184fbde95033f492f7c54990552ef86f +%global commitdate 20250831 +%global shortcommit %(c=%{commit}; echo ${c:0:7}) +%global modulename zenergy + +Name: %{modulename}-kmod +Version: 1.0^%{commitdate}git.%{shortcommit} +Release: 1%{?dist} +Summary: Exposes the energy counters that are reported via the Running Average Power Limit (RAPL) Model-specific Registers (MSRs) via the hardware monitor (HWMON) sysfs interface. +License: GPL-2.0 +URL: https://github.com/BoukeHaarsma23/zenergy +Source0: %{url}/archive/%{commit}.tar.gz#/%{modulename}-%{shortcommit}.tar.gz +# AMD only makes x86_64 CPUs, They literally invented x86_64. +BuildArch: x86_64 +BuildRequires: gcc +BuildRequires: make +BuildRequires: kmodtool + +Requires: akmods +Requires: %{modulename} = %{?epoch:%{epoch}:}%{version} +Requires: %{modulename}-akmod-modules = %{?epoch:%{epoch}:}%{version} +Requires: help2man +Requires: kernel-devel +Conflicts: dkms-%{modulename} +Packager: Cappy Ishihara + +%{expand:%(kmodtool --target %{_target_cpu} --repo terra --kmodname %{modulename} %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null) } + +%description +Based on AMD_ENERGY driver, but with some jiffies added so non-root users can read it safely. +Exposes the energy counters that are reported via the Running Average Power Limit (RAPL) Model-specific Registers (MSRs) +via the hardware monitor (HWMON) sysfs interface. + +%prep +# error out if there was something wrong with kmodtool +%{?kmodtool_check} + +# print kmodtool output for debugging purposes: +kmodtool --target %{_target_cpu} --repo terra --kmodname %{modulename} %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null + +%setup -q -c -n %{modulename}-%{commit} + +find . -type f -name '*.c' -exec sed -i "s/#VERSION#/%{version}/" {} \+ + +for kernel_version in %{?kernel_versions} ; do + cp -a %{modulename}-%{commit} _kmod_build_${kernel_version%%___*} +done + +%build +for kernel_version in %{?kernel_versions} ; do + make V=1 %{?_smp_mflags} -C ${kernel_version##*___} M=${PWD}/_kmod_build_${kernel_version%%___*} VERSION=v%{version} modules +done + +%install +for kernel_version in %{?kernel_versions}; do + mkdir -p %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/ + install -D -m 755 _kmod_build_${kernel_version%%___*}/zenergy.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/ + chmod a+x %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/zenergy.ko +done +%{?akmod_install} + +%changelog +%autochangelog diff --git a/anda/system/zenergy/dkms/anda.hcl b/anda/system/zenergy/dkms/anda.hcl new file mode 100644 index 0000000000..ff0dddedb9 --- /dev/null +++ b/anda/system/zenergy/dkms/anda.hcl @@ -0,0 +1,9 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "dkms-zenergy.spec" + } + labels { + nightly = 1 + } +} diff --git a/anda/system/zenergy/dkms/dkms-zenergy.spec b/anda/system/zenergy/dkms/dkms-zenergy.spec new file mode 100644 index 0000000000..52623400be --- /dev/null +++ b/anda/system/zenergy/dkms/dkms-zenergy.spec @@ -0,0 +1,61 @@ +%global commit 58f2fda7184fbde95033f492f7c54990552ef86f +%global debug_package %{nil} +%global modulename zenergy +%global shortcommit %(c=%{commit}; echo ${c:0:7}) +%global commitdate 20250831 + +Name: dkms-%{modulename} +Version: 1.0^%{commitdate}git.%{shortcommit} +Release: 1%?dist +Summary: Exposes the energy counters that are reported via the Running Average Power Limit (RAPL) Model-specific Registers (MSRs) via the hardware monitor (HWMON) sysfs interface. +License: GPL-2.0 +URL: https://github.com/BoukeHaarsma23/zenergy +Source0: %{url}/archive/%{commit}.tar.gz#/%{name}-%{shortcommit}.tar.gz +BuildRequires: sed +BuildRequires: systemd-rpm-macros +Requires: %{modulename} = %{?epoch:%{epoch}:}%{version} +Provides: %{name}-kmod-common = %{?epoch:%{epoch}:}%{version} +BuildArch: x86_64 +Requires: dkms +Requires: help2man +Conflicts: akmod-%{modulename} +Packager: Cappy Ishihara + +%description +Based on AMD_ENERGY driver, but with some jiffies added so non-root users can read it safely. +Exposes the energy counters that are reported via the Running Average Power Limit (RAPL) Model-specific Registers (MSRs) +via the hardware monitor (HWMON) sysfs interface. + + +%package akmod-modules +Summary: Modules for Akmods +Requires: akmod-%{name} +BuildArch: noarch + +%description akmod-modules +Akmods modules for the akmod-%{name} package. + +%prep +%autosetup -p1 -n %{modulename}-%{commit} +# Zenergy has no concrete version, but upstream says "1.0" in their documentation +/usr/bin/sed -i 's/@VERSION@/%{version}/g' dkms.conf + +%install +mkdir -p %{buildroot}%{_usrsrc}/%{modulename}-%{version} +cp -fr ./ %{buildroot}%{_usrsrc}/%{modulename}-%{version}/ + +%post +dkms add -m %{modulename} -v %{version} -q --rpm_safe_upgrade || : +# Rebuild and make available for the currently running kernel: +dkms build -m %{modulename} -v %{version} -q || : +dkms install -m %{modulename} -v %{version} -q --force || : + + +%files +%{_usrsrc}/%{modulename}-%{version} +%license LICENSE +%doc README.md + + +%changelog +%autochangelog diff --git a/anda/system/zenergy/dkms/update.rhai b/anda/system/zenergy/dkms/update.rhai new file mode 100644 index 0000000000..ae37ba7dd5 --- /dev/null +++ b/anda/system/zenergy/dkms/update.rhai @@ -0,0 +1,5 @@ +rpm.global("commit", gh_commit("BoukeHaarsma23/zenergy")); +if rpm.changed() { + rpm.release(); + rpm.global("commitdate", date()); +} diff --git a/anda/system/zenergy/kmod-common/anda.hcl b/anda/system/zenergy/kmod-common/anda.hcl new file mode 100644 index 0000000000..36c8d29b16 --- /dev/null +++ b/anda/system/zenergy/kmod-common/anda.hcl @@ -0,0 +1,9 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "zenergy.spec" + } + labels { + nightly = 1 + } +} diff --git a/anda/system/zenergy/kmod-common/com.github.zenergy.metainfo.xml b/anda/system/zenergy/kmod-common/com.github.zenergy.metainfo.xml new file mode 100644 index 0000000000..dd3092c029 --- /dev/null +++ b/anda/system/zenergy/kmod-common/com.github.zenergy.metainfo.xml @@ -0,0 +1,30 @@ + + com.github.zenergy + zenergy + zenergy + Exposes the energy counters that are reported via the Running Average Power Limit (RAPL) + +

+ Based on AMD_ENERGY driver, but with some jiffies added so non-root users can read it safely. + Exposes the energy counters that are reported via the Running Average Power Limit (RAPL) Model-specific Registers (MSRs) + via the hardware monitor (HWMON) sysfs interface. +

+
+ https://github.com/BoukeHaarsma23/zenergy + CC0-1.0 + + GPL-2.0 + + + BoukeHaarsma23 + + + + + + platform:zenergy + cpu:type:x86,ven0002fam0017mod*:feature:* + cpu:type:x86,ven0002fam0019mod*:feature:* + cpu:type:x86,ven0002fam001Amod*:feature:* + +
\ No newline at end of file diff --git a/anda/system/zenergy/kmod-common/update.rhai b/anda/system/zenergy/kmod-common/update.rhai new file mode 100644 index 0000000000..ae37ba7dd5 --- /dev/null +++ b/anda/system/zenergy/kmod-common/update.rhai @@ -0,0 +1,5 @@ +rpm.global("commit", gh_commit("BoukeHaarsma23/zenergy")); +if rpm.changed() { + rpm.release(); + rpm.global("commitdate", date()); +} diff --git a/anda/system/zenergy/kmod-common/zenergy.spec b/anda/system/zenergy/kmod-common/zenergy.spec new file mode 100644 index 0000000000..76199c991f --- /dev/null +++ b/anda/system/zenergy/kmod-common/zenergy.spec @@ -0,0 +1,56 @@ +%global commit 58f2fda7184fbde95033f492f7c54990552ef86f +%global shortcommit %(c=%{commit}; echo ${c:0:7}) +%global commitdate 20250831 + +Name: zenergy +Version: 1.0^%{commitdate}git.%{shortcommit} +Release: 1%?dist +Summary: Exposes the energy counters that are reported via the Running Average Power Limit (RAPL) Model-specific Registers (MSRs) via the hardware monitor (HWMON) sysfs interface. +License: GPL-2.0 +URL: https://github.com/BoukeHaarsma23/zenergy +Source0: %{url}/archive/%{commit}.tar.gz#/%{name}-%{shortcommit}.tar.gz +Source1: com.github.zenergy.metainfo.xml +BuildRequires: sed +BuildRequires: systemd-rpm-macros +Requires: (akmod-%{name} = %{?epoch:%{epoch}:}%{version} or dkms-%{name} = %{?epoch:%{epoch}:}%{version}) +Provides: %{name}-kmod-common = %{?epoch:%{epoch}:}%{version} +BuildArch: noarch +Packager: Cappy Ishihara + +%description +Based on AMD_ENERGY driver, but with some jiffies added so non-root users can read it safely. +Exposes the energy counters that are reported via the Running Average Power Limit (RAPL) Model-specific Registers (MSRs) +via the hardware monitor (HWMON) sysfs interface. + + +%package akmod-modules +Summary: Modules for Akmods +Requires: akmod-%{name} +BuildArch: noarch + +%description akmod-modules +Akmods modules for the akmod-%{name} package. + +%prep +%autosetup -p1 -n %{name}-%{commit} + +# Zenergy has no concrete version, but upstream says "1.0" in their documentation +/usr/bin/sed -nE 's/@VERSION@/%{version}/g' dkms.conf > %{name}.conf + +%install +install -Dm644 %{SOURCE1} %{buildroot}%{_datadir}/metainfo/com.github.zenergy.metainfo.xml + +# Akmods modules +install -Dm644 %{name}.conf -t %{buildroot}%{_modulesloaddir} + + +%files +%license LICENSE +%doc README.md +%{_datadir}/metainfo/com.github.zenergy.metainfo.xml + +%files akmod-modules +%{_modulesloaddir}/%{name}.conf + +%changelog +%autochangelog \ No newline at end of file diff --git a/anda/terra/appstream-helper/anda.hcl b/anda/terra/appstream-helper/anda.hcl new file mode 100644 index 0000000000..fdd41b3b22 --- /dev/null +++ b/anda/terra/appstream-helper/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "terra-appstream-helper.spec" + } +} diff --git a/anda/terra/appstream-helper/terra-appstream-helper.spec b/anda/terra/appstream-helper/terra-appstream-helper.spec new file mode 100644 index 0000000000..bc086c0559 --- /dev/null +++ b/anda/terra/appstream-helper/terra-appstream-helper.spec @@ -0,0 +1,52 @@ +Name: terra-appstream-helper +Version: 0.1.7 +Release: 1%?dist +Summary: Scripts and RPM macros to help with AppStream metadata generation for Terra +License: GPL-3.0-or-Later +URL: https://github.com/terrapkg/appstream-helper +Source: %{url}/archive/refs/tags/v%version.tar.gz +BuildArch: noarch +Requires: python3-%{name} = %{evr} +BuildRequires: anda-srpm-macros python3-devel python3-installer pyproject-rpm-macros python3dist(pip) python3dist(setuptools) python3dist(wheel) + +%description +%{summary}. + +%package -n python3-%{name} +Summary: Python files for %{name} +Requires: %{name} = %{evr} +BuildArch: noarch + +%description -n python3-%{name} +Python files needed for %{name}. + +%prep +%autosetup -n appstream-helper-%{version} + +%generate_buildrequires +%pyproject_buildrequires + + +%build +%pyproject_wheel + + +%install +%pyproject_install +%pyproject_save_files -l terra_appstream_helper +install -Dpm644 terra-appstream.macros %buildroot%_rpmmacrodir/macros.terra-appstream + +%files +%license LICENSE +%doc README.md +%{_bindir}/terra-appstream-helper +%{_rpmmacrodir}/macros.terra-appstream + + + +%files -n python3-%{name} -f %{pyproject_files} + + + +%changelog +%autochangelog diff --git a/anda/terra/appstream-helper/update.rhai b/anda/terra/appstream-helper/update.rhai new file mode 100644 index 0000000000..657b5f98cd --- /dev/null +++ b/anda/terra/appstream-helper/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("terrapkg/appstream-helper")); diff --git a/anda/terra/mock-configs/terra-mock-configs.spec b/anda/terra/mock-configs/terra-mock-configs.spec index 5c12f8daaf..fec7562f0d 100644 --- a/anda/terra/mock-configs/terra-mock-configs.spec +++ b/anda/terra/mock-configs/terra-mock-configs.spec @@ -1,6 +1,6 @@ Name: terra-mock-configs -Version: 2.1.0 -Release: 1%?dist +Version: 2.1.1 +Release: 2%?dist Epoch: 1 Summary: Mock configs for Terra repos @@ -21,19 +21,14 @@ Obsoletes: anda-mock-configs < 3-2%{?dist} %prep %autosetup -n mock-configs-%version -%build - %install -mkdir -p %{buildroot}%{_sysusersdir} -mkdir -p %{buildroot}%{_sysconfdir}/mock/templates - -# not copying terra-el-dev.tpl as we aren't using dev -cp -v -t %{buildroot}%{_sysconfdir}/mock/templates/ terra.tpl terra-el.tpl -cp -v *.cfg %{buildroot}%{_sysconfdir}/mock/ +install -Dpm644 *.tpl -t %{buildroot}%{_sysconfdir}/mock/templates/ +install -Dpm644 *.cfg -t %{buildroot}%{_sysconfdir}/mock/ %files %config %{_sysconfdir}/mock/templates/terra.tpl %config %{_sysconfdir}/mock/templates/terra-el.tpl +%config %{_sysconfdir}/mock/templates/terra-rawhide.tpl %config %{_sysconfdir}/mock/terra-*-x86_64.cfg %config %{_sysconfdir}/mock/terra-*-aarch64.cfg %config %{_sysconfdir}/mock/terra-*-i386.cfg diff --git a/anda/terra/obsolete/terra-obsolete.spec b/anda/terra/obsolete/terra-obsolete.spec index 614b3269b6..e9ff7873fb 100644 --- a/anda/terra/obsolete/terra-obsolete.spec +++ b/anda/terra/obsolete/terra-obsolete.spec @@ -146,6 +146,8 @@ BuildArch: noarch %obsolete switchboard-plug-useraccounts 8.0.0-2 %obsolete switchboard-plug-wacom 8.0.0-2 +%obsolete terra-surface-dtx-daemon 0.3.10-1 + %description Currently obsoleted packages: @@ -157,4 +159,3 @@ Currently obsoleted packages: %changelog %autochangelog - diff --git a/anda/terra/release/terra-mesa.repo b/anda/terra/release/terra-mesa.repo index 3df7c1d15b..b42cc4f8ff 100644 --- a/anda/terra/release/terra-mesa.repo +++ b/anda/terra/release/terra-mesa.repo @@ -7,7 +7,7 @@ type=rpm gpgcheck=1 gpgkey=https://repos.fyralabs.com/terra$releasever-mesa/key.asc repo_gpgcheck=1 -enabled=0 +enabled=1 enabled_metadata=1 countme=1 priority=80 diff --git a/anda/terra/release/terra-multimedia.repo b/anda/terra/release/terra-multimedia.repo new file mode 100644 index 0000000000..4690e5000f --- /dev/null +++ b/anda/terra/release/terra-multimedia.repo @@ -0,0 +1,26 @@ +[terra-multimedia] +name=Terra $releasever (Multimedia) +#baseurl=https://repos.fyralabs.com/terra$releasever-multimedia +metalink=https://tetsudou.fyralabs.com/metalink?repo=terra$releasever-multimedia&arch=$basearch +metadata_expire=6h +type=rpm +gpgcheck=1 +gpgkey=https://repos.fyralabs.com/terra$releasever-multimedia/key.asc +repo_gpgcheck=1 +enabled=1 +enabled_metadata=1 +countme=1 +priority=80 + +[terra-multimedia-source] +name=Terra $releasever (Multimedia) - Source +#baseurl=https://repos.fyralabs.com/terra$releasever-multimedia-source +metalink=https://tetsudou.fyralabs.com/metalink?repo=terra$releasever-multimedia-source&arch=$basearch +metadata_expire=6h +type=rpm +gpgcheck=1 +gpgkey=https://repos.fyralabs.com/terra$releasever-multimedia-source/key.asc +repo_gpgcheck=1 +enabled=0 +enabled_metadata=0 +priority=80 diff --git a/anda/terra/release/terra-nvidia.repo b/anda/terra/release/terra-nvidia.repo index b87e80a2bb..0068692dc2 100644 --- a/anda/terra/release/terra-nvidia.repo +++ b/anda/terra/release/terra-nvidia.repo @@ -7,7 +7,7 @@ type=rpm gpgcheck=1 gpgkey=https://repos.fyralabs.com/terra$releasever-nvidia/key.asc repo_gpgcheck=1 -enabled=0 +enabled=1 enabled_metadata=1 countme=1 priority=80 diff --git a/anda/terra/release/terra-release.spec b/anda/terra/release/terra-release.spec index 6a5fe09a44..958e1967ac 100644 --- a/anda/terra/release/terra-release.spec +++ b/anda/terra/release/terra-release.spec @@ -1,6 +1,6 @@ Name: terra-release -Version: 42 -Release: 4 +Version: %{fedora} +Release: 2 Summary: Release package for Terra License: MIT @@ -9,6 +9,7 @@ Source0: terra.repo Source1: terra-extras.repo Source2: terra-nvidia.repo Source3: terra-mesa.repo +Source4: terra-multimedia.repo BuildArch: noarch %dnl We probably shouldn't do this in Rawhide! @@ -18,14 +19,32 @@ BuildArch: noarch Release package for Terra, containing the Terra repository configuration. %package extras -Summary: Release package for Terra Extra +Summary: Release package for Terra Extras Obsoletes: terra-release-extra < 42-3 Provides: terra-release-extra = %version-%release %description extras -Release package for Terra Extra, which is a repository with packages that might cause +Release package for Terra Extras, which is a repository with packages that might cause conflict with Fedora. +%package nvidia +Summary: Release package for the nvidia subrepo of Terra Extras + +%description nvidia +Release package for the Terra Extras nvidia subrepo, which provides nvidia drivers that might cause a conflict with Fedora. + +%package mesa +Summary: Release package for the mesa subrepo of Terra Extras + +%description mesa +Release package for the Terra Extras mesa subrepo, which provides a patched and updated version of mesa that might cause a conflict with Fedora. + +%package multimedia +Summary: Release package for the multimedia subrepo of Terra Extras + +%description multimedia +Release package for the Terra Extras multimedia subrepo, which provides codecs that might cause a conflict with Fedora. + %prep %build @@ -35,16 +54,27 @@ install -D -p -m 0644 -t %{buildroot}%{_sysconfdir}/yum.repos.d %{SOURCE0} install -Dpm644 -t %buildroot%_sysconfdir/yum.repos.d %SOURCE1 install -Dpm644 -t %buildroot%_sysconfdir/yum.repos.d %SOURCE2 install -Dpm644 -t %buildroot%_sysconfdir/yum.repos.d %SOURCE3 +install -Dpm644 -t %buildroot%_sysconfdir/yum.repos.d %SOURCE4 %files %config(noreplace) %{_sysconfdir}/yum.repos.d/terra.repo %files extras %config(noreplace) %{_sysconfdir}/yum.repos.d/terra-extras.repo + +%files nvidia %config(noreplace) %{_sysconfdir}/yum.repos.d/terra-nvidia.repo + +%files mesa %config(noreplace) %{_sysconfdir}/yum.repos.d/terra-mesa.repo +%files multimedia +%config(noreplace) %{_sysconfdir}/yum.repos.d/terra-multimedia.repo + %changelog +* Thu Nov 13 2025 madonuko - 44-1 +- Add terra-multimedia + * Sun Jan 12 2025 Cappy Ishihara - 42-4 - Add NVIDIA and Mesa repository streams diff --git a/anda/terra/srpm-macros/anda-srpm-macros.spec b/anda/terra/srpm-macros/anda-srpm-macros.spec index 930da63762..cc13db5337 100644 --- a/anda/terra/srpm-macros/anda-srpm-macros.spec +++ b/anda/terra/srpm-macros/anda-srpm-macros.spec @@ -1,6 +1,6 @@ Name: anda-srpm-macros Version: 0.2.21 -Release: 1%?dist +Release: 2%?dist Summary: SRPM macros for extra Fedora packages License: MIT @@ -9,6 +9,7 @@ Source0: %url/archive/refs/tags/v%{version}.tar.gz Recommends: rust-packaging Requires: git-core +Requires: terra-appstream-helper Obsoletes: fyra-srpm-macros < 0.1.1-1 Provides: fyra-srpm-macros = %{version}-%{release} BuildArch: noarch diff --git a/anda/themes/fluent-icon-theme/fluent-icon-theme.spec b/anda/themes/fluent-icon-theme/fluent-icon-theme.spec index 4dfa733b63..67f001d78a 100644 --- a/anda/themes/fluent-icon-theme/fluent-icon-theme.spec +++ b/anda/themes/fluent-icon-theme/fluent-icon-theme.spec @@ -2,7 +2,7 @@ Name: fluent-icon-theme Version: 20250821 -Release: 2%?dist +Release: 3%?dist Summary: Fluent icon theme for linux desktops License: GPL-3.0 @@ -25,7 +25,7 @@ Fluent icon theme for linux desktops. mkdir -p %buildroot%_datadir/themes ./install.sh -a -d %buildroot%_datadir/icons -%fdupes %buildroot%_datadir/icons/ +%fdupes -s %buildroot%_datadir/icons/ %files %license COPYING diff --git a/anda/themes/fluent-kde-theme/fluent-kde-theme.spec b/anda/themes/fluent-kde-theme/fluent-kde-theme.spec index b35d46a3f0..b0014961a5 100644 --- a/anda/themes/fluent-kde-theme/fluent-kde-theme.spec +++ b/anda/themes/fluent-kde-theme/fluent-kde-theme.spec @@ -1,5 +1,5 @@ -%global commit 315251f3e0099fc7afa7ab183880141a478f584e -%global commit_date 20250428 +%global commit 44794f29c89de994b0179aebabd2f5776c90d236 +%global commit_date 20251110 %global shortcommit %(c=%{commit}; echo ${c:0:7}) Name: fluent-kde-theme diff --git a/anda/themes/helium-gtk-theme/helium-gtk-theme.spec b/anda/themes/helium-gtk-theme/helium-gtk-theme.spec index 3c9031e68a..e48872988f 100644 --- a/anda/themes/helium-gtk-theme/helium-gtk-theme.spec +++ b/anda/themes/helium-gtk-theme/helium-gtk-theme.spec @@ -1,4 +1,4 @@ -%global ver 1.8.59 +%global ver 1.8.71 Summary: tauOS GTK/GNOME Shell Themes Name: helium-gtk-theme diff --git a/anda/themes/kde-material-you-colors/kde-material-you-colors.spec b/anda/themes/kde-material-you-colors/kde-material-you-colors.spec index 5de39bcb08..19735b7214 100644 --- a/anda/themes/kde-material-you-colors/kde-material-you-colors.spec +++ b/anda/themes/kde-material-you-colors/kde-material-you-colors.spec @@ -1,5 +1,5 @@ Name: kde-material-you-colors -Version: 1.10.1 +Version: 2.0.0 Release: 1%?dist Summary: Automatic Material You Colors Generator from your wallpaper for the Plasma Desktop License: GPL-3.0-only diff --git a/anda/themes/lightly-qt5/VER5.txt b/anda/themes/lightly-qt5/VER5.txt index 60d3b2f4a4..7273c0fa8c 100644 --- a/anda/themes/lightly-qt5/VER5.txt +++ b/anda/themes/lightly-qt5/VER5.txt @@ -1 +1 @@ -15 +25 diff --git a/anda/themes/lightly-qt6/VER6.txt b/anda/themes/lightly-qt6/VER6.txt index ec635144f6..9a037142aa 100644 --- a/anda/themes/lightly-qt6/VER6.txt +++ b/anda/themes/lightly-qt6/VER6.txt @@ -1 +1 @@ -9 +10 \ No newline at end of file diff --git a/anda/themes/tela-icon-theme/tela-icon-theme.spec b/anda/themes/tela-icon-theme/tela-icon-theme.spec index c1c5d79aeb..df3aea1a85 100644 --- a/anda/themes/tela-icon-theme/tela-icon-theme.spec +++ b/anda/themes/tela-icon-theme/tela-icon-theme.spec @@ -1,5 +1,5 @@ -%global commit 9a3a3e12094d5f2daaafd148404fde214280f5e7 -%global commit_date 20250826 +%global commit 03cf34575b7806fcb69553c41ba88f75d0fe839e +%global commit_date 20251025 %global shortcommit %(c=%{commit}; echo ${c:0:7}) Name: tela-icon-theme diff --git a/anda/tools/appimagelauncher/appimagelauncher.spec b/anda/tools/appimagelauncher/appimagelauncher.spec index 10420ae589..12be75e48b 100644 --- a/anda/tools/appimagelauncher/appimagelauncher.spec +++ b/anda/tools/appimagelauncher/appimagelauncher.spec @@ -2,8 +2,8 @@ %global git_shortcommit %(c=%{git_commit}; echo ${c:0:7}) Name: appimagelauncher -Version: 2.2.0 -Release: 1%{?dist} +Version: 3.0.0.beta.3 +Release: 1%?dist Summary: Helper application for Linux distributions serving as a kind of "entry point" for running and integrating AppImages License: MIT diff --git a/anda/tools/bdf2sfd/bdf2sfd.spec b/anda/tools/bdf2sfd/bdf2sfd.spec index 40b48b09a2..f13f10e509 100644 --- a/anda/tools/bdf2sfd/bdf2sfd.spec +++ b/anda/tools/bdf2sfd/bdf2sfd.spec @@ -4,7 +4,7 @@ Release: 1%?dist Summary: BDF to SFD converter, allowing to vectorize bitmap fonts License: BSD-2-Clause URL: https://github.com/fcambus/bdf2sfd -Source0: %url/archive/refs/tags/1.1.9.tar.gz +Source0: %url/archive/refs/tags/%version.tar.gz BuildRequires: cmake gcc %description diff --git a/anda/tools/bdf2sfd/update.rhai b/anda/tools/bdf2sfd/update.rhai index e69de29bb2..9d7ea455c1 100644 --- a/anda/tools/bdf2sfd/update.rhai +++ b/anda/tools/bdf2sfd/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("fcambus/bdf2sfd")); diff --git a/anda/tools/binsider/anda.hcl b/anda/tools/binsider/anda.hcl new file mode 100644 index 0000000000..985bbd2619 --- /dev/null +++ b/anda/tools/binsider/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "binsider.spec" + } +} diff --git a/anda/tools/binsider/binsider.spec b/anda/tools/binsider/binsider.spec new file mode 100644 index 0000000000..808e194a74 --- /dev/null +++ b/anda/tools/binsider/binsider.spec @@ -0,0 +1,41 @@ +Name: binsider +Version: 0.2.1 +Release: 1%?dist +Summary: Analyze ELF binaries like a boss 😼🕵️‍♂️ +License: Apache-2.0 AND MIT +URL: https://github.com/orhun/binsider +Source0: %url/archive/refs/tags/v%{version}.tar.gz + +BuildRequires: anda-srpm-macros +BuildRequires: cargo-rpm-macros +BuildRequires: gcc +BuildRequires: cargo +BuildRequires: mold + +Packager: Owen Zimmerman + +%description +Binsider can perform static and dynamic analysis, inspect strings, examine +linked libraries, and perform hexdumps, within a terminal user interface. + +%prep +%autosetup -n %{name}-%{version} +%cargo_prep_online + +%build +%cargo_build + +%install +install -Dm 755 target/rpm/binsider %{buildroot}%{_bindir}/binsider +%cargo_license_summary_online +%{cargo_license_online -a} > LICENSE.dependencies + +%files +%doc README.md CONTRIBUTING.md CHANGELOG.md CODE_OF_CONDUCT.md RELEASE.md SECURITY.md +%license LICENSE-APACHE LICENSE-MIT +%license LICENSE.dependencies +%{_bindir}/binsider + +%changelog +* Thu Nov 13 2025 Owen Zimmerman +- Initial commit diff --git a/anda/tools/binsider/update.rhai b/anda/tools/binsider/update.rhai new file mode 100644 index 0000000000..668c74c991 --- /dev/null +++ b/anda/tools/binsider/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("orhun/binsider")); diff --git a/anda/tools/buildsys/gradle/gradle.spec b/anda/tools/buildsys/gradle/gradle.spec index d5ec147afb..006b8211be 100644 --- a/anda/tools/buildsys/gradle/gradle.spec +++ b/anda/tools/buildsys/gradle/gradle.spec @@ -1,5 +1,5 @@ Name: gradle -Version: 9.0.0 +Version: 9.2.1 Release: 1%?dist Summary: Powerful build system for the JVM URL: https://gradle.org/ diff --git a/anda/tools/buildsys/katsu/katsu.spec b/anda/tools/buildsys/katsu/katsu.spec index e5a910b1f5..5f6af2acc7 100644 --- a/anda/tools/buildsys/katsu/katsu.spec +++ b/anda/tools/buildsys/katsu/katsu.spec @@ -6,7 +6,7 @@ %global cargo_install_lib 0 Name: katsu -Version: 0.9.2 +Version: 0.10.2 Release: 1%?dist Summary: Vicious image builder Packager: madonuko @@ -30,7 +30,7 @@ Source0: %url/archive/refs/tags/v%version.tar.gz BuildRequires: anda-srpm-macros cargo-rpm-macros >= 26 Requires: xorriso dracut limine grub2 systemd-devel squashfs-tools parted gdisk -Requires: dracut-live dracut-config-generic dracut-config-rescue grub2-tools-extra dracut-squash +Requires: dracut-live dracut-config-rescue grub2-tools-extra dracut-squash BuildRequires: cargo rust-packaging pkgconfig(libudev) clang-devel mold %description diff --git a/anda/tools/buildsys/mise/mise-fix-metadata-auto.diff b/anda/tools/buildsys/mise/mise-fix-metadata-auto.diff index 7145ccb2e3..57543fb611 100644 --- a/anda/tools/buildsys/mise/mise-fix-metadata-auto.diff +++ b/anda/tools/buildsys/mise/mise-fix-metadata-auto.diff @@ -1,6 +1,6 @@ ---- mise-2025.6.6/Cargo.toml 1970-01-01T00:00:01+00:00 -+++ mise-2025.6.6/Cargo.toml 2025-06-23T09:18:21.561501+00:00 -@@ -475,26 +475,6 @@ +--- mise-2025.9.15/Cargo.toml 1970-01-01T00:00:01+00:00 ++++ mise-2025.9.15/Cargo.toml 2025-09-22T01:33:34.763933+00:00 +@@ -507,27 +507,6 @@ optional = true default-features = false @@ -10,6 +10,7 @@ - "archive-zip", - "compression-zip-deflate", - "signatures", +- "rustls", -] -optional = true -default-features = false @@ -27,7 +28,7 @@ [lints.clippy] borrowed_box = "allow" -@@ -509,3 +489,4 @@ +@@ -544,3 +523,4 @@ [profile.serious] lto = true inherits = "release" diff --git a/anda/tools/buildsys/mise/rust-mise.spec b/anda/tools/buildsys/mise/rust-mise.spec index eff0243652..0b6c8618c8 100644 --- a/anda/tools/buildsys/mise/rust-mise.spec +++ b/anda/tools/buildsys/mise/rust-mise.spec @@ -5,7 +5,7 @@ %global crate mise Name: rust-mise -Version: 2025.8.21 +Version: 2025.11.7 Release: 1%?dist Summary: Front-end to your dev env @@ -29,9 +29,10 @@ The front-end to your dev env.} %description %{_description} %package -n %{crate} -Summary: %{summary} -License: ((Apache-2.0 OR MIT) AND BSD-3-Clause) AND (0BSD OR MIT OR Apache-2.0) AND Apache-2.0 AND (Apache-2.0 AND ISC) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR ISC OR MIT) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND (BSD-2-Clause OR Apache-2.0 OR MIT) AND (BSD-3-Clause) AND (CC0-1.0 OR MIT-0 OR Apache-2.0) AND CDLA-Permissive-2.0 AND ISC AND MIT AND (MIT OR Apache-2.0) AND (MIT OR Apache-2.0 OR Apache-2.0 WITH LLVM-exception) AND (MIT OR Apache-2.0 OR BSD-1-Clause) AND (MIT OR Apache-2.0 OR LGPL-2.1-or-later) AND (MIT OR Apache-2.0 OR Zlib) AND (MIT OR Zlib OR Apache-2.0) AND MPL-2.0 AND Unicode-3.0 AND (Unlicense OR MIT) AND Zlib AND (Zlib OR Apache-2.0 OR MIT) URL: https://mise.jdx.dev/ +Summary: %{summary} +License: ((Apache-2.0 OR MIT) AND BSD-3-Clause) AND ((MIT OR Apache-2.0) AND Unicode-3.0) AND (0BSD OR MIT OR Apache-2.0) AND Apache-2.0 AND (Apache-2.0 AND ISC) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR ISC OR MIT) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND BSD-2-Clause AND (BSD-2-Clause OR Apache-2.0 OR MIT) AND BSD-3-Clause AND (CC0-1.0 OR Apache-2.0 OR Apache-2.0 WITH LLVM-exception) AND (CC0-1.0 OR MIT-0 OR Apache-2.0) AND CDLA-Permissive-2.0 AND ISC AND (ISC AND (Apache-2.0 OR ISC)) AND (ISC AND (Apache-2.0 OR ISC) AND OpenSSL) AND MIT AND (MIT OR Apache-2.0) AND (MIT OR Apache-2.0 OR Apache-2.0 WITH LLVM-exception) AND (MIT OR Apache-2.0 OR BSD-1-Clause) AND (MIT OR Apache-2.0 OR LGPL-2.1-or-later) AND (MIT OR Apache-2.0 OR Zlib) AND (MIT OR Zlib OR Apache-2.0) AND MPL-2.0 AND Unicode-3.0 AND (Unlicense OR MIT) AND Zlib AND (Zlib OR Apache-2.0 OR MIT) AND bzip2-1.0.6 +# LICENSE.dependencies contains a full license breakdown %description -n %{crate} %{_description} @@ -43,8 +44,44 @@ URL: https://mise.jdx.dev/ %{_bindir}/mise %_mandir/man1/mise.1.gz +%package -n %crate-bash-completion +Summary: Bash completion for %crate +Requires: %{crate} = %{version}-%{release} +Requires: bash-completion +Requires: usage +Supplements: (%{crate} and bash-completion) -%pkg_completion -bfzn %crate +%description -n %crate-bash-completion +Bash command line completion support for %{crate}. + +%package -n %crate-fish-completion +Summary: Fish completion for %{crate} +Requires: %{crate} = %{version}-%{release} +Requires: fish +Requires: usage +Supplements: (%{crate} and fish) + +%description -n %crate-fish-completion +Fish command line completion support for %{crate}. + +%package -n %crate-zsh-completion +Summary: Zsh completion for %{crate} +Requires: %{crate} = %{version}-%{release} +Requires: zsh +Requires: usage +Supplements: (%{crate} and zsh) + +%description -n %crate-zsh-completion +Zsh command line completion support for %{crate}. + +%files -n %crate-bash-completion +%bash_completions_dir/mise.bash + +%files -n %crate-fish-completion +%fish_completions_dir/mise.fish + +%files -n %crate-zsh-completion +%zsh_completions_dir/_mise %prep diff --git a/anda/tools/buildsys/sccache/anda.hcl b/anda/tools/buildsys/sccache/anda.hcl deleted file mode 100644 index 665fb9cf1a..0000000000 --- a/anda/tools/buildsys/sccache/anda.hcl +++ /dev/null @@ -1,5 +0,0 @@ -project pkg { - rpm { - spec = "rust-sccache.spec" - } -} diff --git a/anda/tools/buildsys/sccache/rust-sccache.spec b/anda/tools/buildsys/sccache/rust-sccache.spec deleted file mode 100644 index 9702154dbf..0000000000 --- a/anda/tools/buildsys/sccache/rust-sccache.spec +++ /dev/null @@ -1,496 +0,0 @@ -# Generated by rust2rpm 26 -%bcond_with check -# aarch64 dist is not available -%ifarch aarch64 -%bcond_with dist_server -%else -%bcond_without dist_server -%endif - -# Don't mangle shebangs -%global __brp_mangle_shebangs %{nil} - -%global crate sccache - -Name: rust-sccache -Version: 0.10.0 -Release: 1%?dist -Summary: Ccache-like tool - -License: Apache-2.0 -URL: https://crates.io/crates/sccache -Source: %{crates_source} -# Automatically generated patch to strip dependencies and normalize metadata -Patch: sccache-fix-metadata-auto.diff - -BuildRequires: cargo-rpm-macros >= 24 -BuildRequires: anda-srpm-macros -BuildRequires: openssl-devel -BuildRequires: gcc -BuildRequires: perl -BuildRequires: rust-packaging -BuildRequires: mold - -%global _description %{expand: -Sccache is a ccache-like tool. It is used as a compiler wrapper and -avoids compilation when possible. Sccache has the capability to utilize -caching in remote storage environments, including various cloud storage -options, or alternatively, in local storage.} - -%description %{_description} - -%package -n %{crate} -Summary: %{summary} -License: MIT - -%description -n %{crate} %{_description} - -%files -n %{crate} -%license LICENSE -#license LICENSE.dependencies -%doc CODE_OF_CONDUCT.md -%doc README.md -%{_bindir}/sccache -%if %{with dist_server} -%{_bindir}/sccache-dist -%endif - -%package devel -Summary: %{summary} -BuildArch: noarch -Provides: crate(sccache) = 0.7.4 -Requires: cargo -Requires: rust >= 1.67.1 - -%description devel %{_description} - -This package contains library source intended for building other packages which -use the "%{crate}" crate. - -%files devel -%license %{crate_instdir}/LICENSE -%doc %{crate_instdir}/CODE_OF_CONDUCT.md -%doc %{crate_instdir}/README.md -%{crate_instdir}/ - -%package -n %{name}+default-devel -Summary: %{summary} -BuildArch: noarch -Provides: crate(sccache/default) = 0.7.4 -Requires: cargo -Requires: crate(sccache) = 0.7.4 -Requires: crate(sccache/all) = 0.7.4 - -%description -n %{name}+default-devel %{_description} - -This package contains library source intended for building other packages which -use the "default" feature of the "%{crate}" crate. - -%files -n %{name}+default-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+all-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+all-devel %{_description} - -This package contains library source intended for building other packages which -use the "all" feature of the "%{crate}" crate. - -%files -n %{name}+all-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+azure-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+azure-devel %{_description} - -This package contains library source intended for building other packages which -use the "azure" feature of the "%{crate}" crate. - -%files -n %{name}+azure-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+dist-client-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+dist-client-devel %{_description} - -This package contains library source intended for building other packages which -use the "dist-client" feature of the "%{crate}" crate. - -%files -n %{name}+dist-client-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+dist-server-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+dist-server-devel %{_description} - -This package contains library source intended for building other packages which -use the "dist-server" feature of the "%{crate}" crate. - -%files -n %{name}+dist-server-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+dist-tests-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+dist-tests-devel %{_description} - -This package contains library source intended for building other packages which -use the "dist-tests" feature of the "%{crate}" crate. - -%files -n %{name}+dist-tests-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+flate2-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+flate2-devel %{_description} - -This package contains library source intended for building other packages which -use the "flate2" feature of the "%{crate}" crate. - -%files -n %{name}+flate2-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+gcs-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+gcs-devel %{_description} - -This package contains library source intended for building other packages which -use the "gcs" feature of the "%{crate}" crate. - -%files -n %{name}+gcs-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+gha-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+gha-devel %{_description} - -This package contains library source intended for building other packages which -use the "gha" feature of the "%{crate}" crate. - -%files -n %{name}+gha-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+http-body-util-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+http-body-util-devel %{_description} - -This package contains library source intended for building other packages which -use the "http-body-util" feature of the "%{crate}" crate. - -%files -n %{name}+http-body-util-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+hyper-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+hyper-devel %{_description} - -This package contains library source intended for building other packages which -use the "hyper" feature of the "%{crate}" crate. - -%files -n %{name}+hyper-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+hyper-util-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+hyper-util-devel %{_description} - -This package contains library source intended for building other packages which -use the "hyper-util" feature of the "%{crate}" crate. - -%files -n %{name}+hyper-util-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+jwt-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+jwt-devel %{_description} - -This package contains library source intended for building other packages which -use the "jwt" feature of the "%{crate}" crate. - -%files -n %{name}+jwt-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+libmount-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+libmount-devel %{_description} - -This package contains library source intended for building other packages which -use the "libmount" feature of the "%{crate}" crate. - -%files -n %{name}+libmount-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+memcached-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+memcached-devel %{_description} - -This package contains library source intended for building other packages which -use the "memcached" feature of the "%{crate}" crate. - -%files -n %{name}+memcached-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+native-zlib-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+native-zlib-devel %{_description} - -This package contains library source intended for building other packages which -use the "native-zlib" feature of the "%{crate}" crate. - -%files -n %{name}+native-zlib-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+nix-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+nix-devel %{_description} - -This package contains library source intended for building other packages which -use the "nix" feature of the "%{crate}" crate. - -%files -n %{name}+nix-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+opendal-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+opendal-devel %{_description} - -This package contains library source intended for building other packages which -use the "opendal" feature of the "%{crate}" crate. - -%files -n %{name}+opendal-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+openssl-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+openssl-devel %{_description} - -This package contains library source intended for building other packages which -use the "openssl" feature of the "%{crate}" crate. - -%files -n %{name}+openssl-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+oss-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+oss-devel %{_description} - -This package contains library source intended for building other packages which -use the "oss" feature of the "%{crate}" crate. - -%files -n %{name}+oss-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+redis-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+redis-devel %{_description} - -This package contains library source intended for building other packages which -use the "redis" feature of the "%{crate}" crate. - -%files -n %{name}+redis-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+reqsign-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+reqsign-devel %{_description} - -This package contains library source intended for building other packages which -use the "reqsign" feature of the "%{crate}" crate. - -%files -n %{name}+reqsign-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+reqwest-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+reqwest-devel %{_description} - -This package contains library source intended for building other packages which -use the "reqwest" feature of the "%{crate}" crate. - -%files -n %{name}+reqwest-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+rouille-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+rouille-devel %{_description} - -This package contains library source intended for building other packages which -use the "rouille" feature of the "%{crate}" crate. - -%files -n %{name}+rouille-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+s3-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+s3-devel %{_description} - -This package contains library source intended for building other packages which -use the "s3" feature of the "%{crate}" crate. - -%files -n %{name}+s3-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+sha2-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+sha2-devel %{_description} - -This package contains library source intended for building other packages which -use the "sha2" feature of the "%{crate}" crate. - -%files -n %{name}+sha2-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+syslog-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+syslog-devel %{_description} - -This package contains library source intended for building other packages which -use the "syslog" feature of the "%{crate}" crate. - -%files -n %{name}+syslog-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+unstable-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+unstable-devel %{_description} - -This package contains library source intended for building other packages which -use the "unstable" feature of the "%{crate}" crate. - -%files -n %{name}+unstable-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+url-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+url-devel %{_description} - -This package contains library source intended for building other packages which -use the "url" feature of the "%{crate}" crate. - -%files -n %{name}+url-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+vendored-openssl-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+vendored-openssl-devel %{_description} - -This package contains library source intended for building other packages which -use the "vendored-openssl" feature of the "%{crate}" crate. - -%files -n %{name}+vendored-openssl-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+version-compare-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+version-compare-devel %{_description} - -This package contains library source intended for building other packages which -use the "version-compare" feature of the "%{crate}" crate. - -%files -n %{name}+version-compare-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n %{name}+webdav-devel -Summary: %{summary} -BuildArch: noarch - -%description -n %{name}+webdav-devel %{_description} - -This package contains library source intended for building other packages which -use the "webdav" feature of the "%{crate}" crate. - -%files -n %{name}+webdav-devel -%ghost %{crate_instdir}/Cargo.toml - -%prep -%autosetup -n %{crate}-%{version} -p1 -%cargo_prep_online - - -%build -%if %{with dist_server} -%cargo_build -f dist-server -%else -%cargo_build -%endif - -%install -rm -rf .git || true -%if %{with dist_server} -%cargo_install -f dist-server -%else -%cargo_install -%endif - -%if %{with check} -%check -%if %{with dist_server} -%cargo_test -f dist-server -%else -%cargo_test -%endif - -%endif - -%changelog -* Mon Dec 18 2023 Cappy Ishihara - 0.7.4-1 -- Initial package diff --git a/anda/tools/buildsys/sccache/sccache-0.8.2.crate b/anda/tools/buildsys/sccache/sccache-0.8.2.crate deleted file mode 100644 index b794f80411..0000000000 Binary files a/anda/tools/buildsys/sccache/sccache-0.8.2.crate and /dev/null differ diff --git a/anda/tools/buildsys/sccache/sccache-fix-metadata-auto.diff b/anda/tools/buildsys/sccache/sccache-fix-metadata-auto.diff deleted file mode 100644 index 33ad098341..0000000000 --- a/anda/tools/buildsys/sccache/sccache-fix-metadata-auto.diff +++ /dev/null @@ -1,15 +0,0 @@ ---- sccache-0.8.2/Cargo.toml 1970-01-01T00:00:01+00:00 -+++ sccache-0.8.2/Cargo.toml 2024-10-04T06:26:43.561316+00:00 -@@ -403,12 +403,3 @@ - [target."cfg(unix)".dependencies.daemonize] - version = "0.5" - --[target."cfg(windows)".dependencies.windows-sys] --version = "0.52" --features = [ -- "Win32_Foundation", -- "Win32_Globalization", -- "Win32_Storage_FileSystem", -- "Win32_System_Threading", -- "Win32_System_Console", --] diff --git a/anda/tools/buildsys/sccache/update.rhai b/anda/tools/buildsys/sccache/update.rhai deleted file mode 100644 index eb645c69f5..0000000000 --- a/anda/tools/buildsys/sccache/update.rhai +++ /dev/null @@ -1 +0,0 @@ -rpm.version(crates("sccache")); diff --git a/anda/tools/buildsys/subatomic/subatomic.spec b/anda/tools/buildsys/subatomic/subatomic.spec index 4a0e139d2a..6babc84192 100644 --- a/anda/tools/buildsys/subatomic/subatomic.spec +++ b/anda/tools/buildsys/subatomic/subatomic.spec @@ -1,7 +1,7 @@ %define debug_package %{nil} Name: subatomic -Version: 0.10.0 +Version: 0.12.1 Release: 1%?dist Summary: A modern package delivery system diff --git a/anda/tools/copyparty/copyparty.spec b/anda/tools/copyparty/copyparty.spec index 7d8094e4af..561fc7b612 100644 --- a/anda/tools/copyparty/copyparty.spec +++ b/anda/tools/copyparty/copyparty.spec @@ -1,7 +1,7 @@ %global pypi_name copyparty Name: %{pypi_name} -Version: 1.19.7 +Version: 1.19.20 Release: 1%?dist Summary: Portable, featureful, and fast file server URL: https://github.com/9001/copyparty @@ -12,7 +12,6 @@ BuildRequires: anda-srpm-macros BuildRequires: python3-devel python3-pip pyproject-rpm-macros BuildRequires: python3dist(wheel) python3dist(build) python3dist(jinja2) BuildRequires: python3dist(setuptools) python3dist(installer) -Requires: python3 Requires: python3-%{name} = %{evr} Suggests: ffmpeg python3dist(fuse) BuildArch: noarch @@ -20,8 +19,7 @@ Packager: Riley Loo %description Portable file server with accelerated resumable uploads, dedup, WebDAV, -FTP, TFTP, zeroconf, media indexer, thumbnails++ all in one file, no -(runtime) deps (other than Python itself) +FTP, TFTP, zeroconf, media indexer, thumbnails++ all in one file, no deps. %package -n python3-%{pypi_name} Requires: python3 @@ -29,10 +27,8 @@ Summary: %{summary} Requires: %{name} = %{evr} %description -n python3-%{pypi_name} - Portable file server with accelerated resumable uploads, dedup, WebDAV, -FTP, TFTP, zeroconf, media indexer, thumbnails++ all in one file, no -(runtime) deps (other than Python itself) +FTP, TFTP, zeroconf, media indexer, thumbnails++ all in one file, no deps. %prep %autosetup -n copyparty-%version @@ -53,8 +49,6 @@ FTP, TFTP, zeroconf, media indexer, thumbnails++ all in one file, no %files -n python3-%{pypi_name} %{python3_sitelib}/%{pypi_name}* - %changelog - * Mon Jul 28 2025 Riley Loo - Initial package diff --git a/anda/tools/coreboot-utils/coreboot-utils.spec b/anda/tools/coreboot-utils/coreboot-utils.spec index b69f92b16f..88dd4168c6 100644 --- a/anda/tools/coreboot-utils/coreboot-utils.spec +++ b/anda/tools/coreboot-utils/coreboot-utils.spec @@ -1,8 +1,8 @@ %define debug_package %nil Name: coreboot-utils -Version: 25.06 -Release: 3%?dist +Version: 25.09 +Release: 1%?dist Summary: Various coreboot utilities URL: https://doc.coreboot.org License: BSD-3-Clause AND Apache-2.0 AND CC-BY-SA-3.0 AND GPL-2.0-only AND GPL-3.0-or-later AND ISC AND BSD-2-Clause-Patent AND BSD-4-Clause-UC AND CC-PDDC AND GPL-2.0-or-later AND HPND-sell-varient AND LGPL-2.1-or-later AND BSD-2-Clause AND CC-BY-4.0 AND GPL-3.0-only AND HPND AND X11 AND MIT @@ -559,7 +559,7 @@ popd %ifarch x86_64 pushd msrtool -./configure +%configure %make_build popd %endif diff --git a/anda/tools/crossystem/anda.hcl b/anda/tools/crossystem/anda.hcl index 82e101d4fa..f425b1c769 100644 --- a/anda/tools/crossystem/anda.hcl +++ b/anda/tools/crossystem/anda.hcl @@ -2,4 +2,7 @@ project pkg { rpm { spec = "crossystem.spec" } + labels { + nightly = 1 + } } diff --git a/anda/tools/cuda-nvcc/nvcc.profile b/anda/tools/cuda-nvcc/nvcc.profile deleted file mode 100644 index 056b753533..0000000000 --- a/anda/tools/cuda-nvcc/nvcc.profile +++ /dev/null @@ -1,6 +0,0 @@ -NVVMIR_LIBRARY_DIR = /usr/share/cuda -PATH += /usr/libexec/cuda/open64/bin: -INCLUDES += "-IINCLUDE_DIR" -LIBRARIES =+ "-LLIBDIR" -CUDAFE_FLAGS += -PTXAS_FLAGS += diff --git a/anda/tools/electron/electron.spec b/anda/tools/electron/electron.spec index e6e4628f35..c0fb7a14a8 100644 --- a/anda/tools/electron/electron.spec +++ b/anda/tools/electron/electron.spec @@ -12,7 +12,7 @@ %global __provides_exclude_from %{_libdir}/%{name}/.*\\.so Name: electron -Version: 37.4.0 +Version: 39.2.3 Release: 1%?dist Summary: Build cross platform desktop apps with web technologies License: MIT diff --git a/anda/tools/espanso-wayland/espanso-wayland.spec b/anda/tools/espanso-wayland/espanso-wayland.spec index 59657ea215..b016277067 100644 --- a/anda/tools/espanso-wayland/espanso-wayland.spec +++ b/anda/tools/espanso-wayland/espanso-wayland.spec @@ -1,5 +1,5 @@ Name: espanso-wayland -Version: 2.2.4 +Version: 2.3.0 Release: 1%?dist Summary: Cross-platform Text Expander written in Rust for Wayland License: GPL-3.0 diff --git a/anda/tools/espanso-x11/espanso-x11.spec b/anda/tools/espanso-x11/espanso-x11.spec index 0e46222c7e..3794f249bd 100644 --- a/anda/tools/espanso-x11/espanso-x11.spec +++ b/anda/tools/espanso-x11/espanso-x11.spec @@ -1,5 +1,5 @@ Name: espanso-x11 -Version: 2.2.4 +Version: 2.3.0 Release: 1%?dist Summary: Cross-platform Text Expander written in Rust for X11 License: GPL-3.0 diff --git a/anda/tools/glasgow/anda.hcl b/anda/tools/glasgow/anda.hcl new file mode 100644 index 0000000000..17d5b50e98 --- /dev/null +++ b/anda/tools/glasgow/anda.hcl @@ -0,0 +1,9 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "glasgow.spec" + } + labels { + nightly = 1 + } +} diff --git a/anda/tools/glasgow/glasgow.spec b/anda/tools/glasgow/glasgow.spec new file mode 100644 index 0000000000..b47f77613c --- /dev/null +++ b/anda/tools/glasgow/glasgow.spec @@ -0,0 +1,71 @@ +%global commit 67a8574a9b59af18e36e81411a981e23fe205ff3 +%global commit_date 20251116 +%global shortcommit %(c=%{commit}; echo ${c:0:7}) + +%global pypi_name glasgow +%global _desc Scots Army Knife for electronics. + +# Errors without setting this for some reason +%global _udevrulesdir /usr/lib/udev/rules.d + +Name: python-%{pypi_name} +Version: %commit_date.%shortcommit +Release: 1%?dist +Summary: Scots Army Knife for electronics +License: 0BSD AND Apache-2.0 +URL: https://github.com/GlasgowEmbedded/glasgow +Source0: %url/archive/%commit/glasgow-%commit.tar.gz +Patch0: remove-dep-versions.patch +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-pip +BuildRequires: python3-build +BuildRequires: python3-pdm-backend +BuildRequires: git + +Requires: yosys +Requires: nextpnr +Requires: icestorm + +Recommends: python3-aiohttp + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: glasgow +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -p1 -n glasgow-%commit + +%build +export PDM_BUILD_SCM_VERSION=0.1.0 +pushd software +%pyproject_wheel +popd + +%install +%pyproject_install +%pyproject_save_files glasgow +install -Dm644 config/70-glasgow.rules %{buildroot}%{_udevrulesdir}/70-glasgow.rules + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.md CODEOWNERS CODE_OF_CONDUCT.md CONTRIBUTING.md +%license LICENSE-0BSD.txt LICENSE-Apache-2.0.txt +%{_bindir}/glasgow +%{_udevrulesdir}/70-glasgow.rules +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc +%python3_sitelib/glasgow-*.dist-info/* + +%changelog +* Mon Sep 29 2025 Owen Zimmerman +- Initial commit diff --git a/anda/tools/glasgow/remove-dep-versions.patch b/anda/tools/glasgow/remove-dep-versions.patch new file mode 100644 index 0000000000..dfcad74c02 --- /dev/null +++ b/anda/tools/glasgow/remove-dep-versions.patch @@ -0,0 +1,44 @@ +diff --git a/software/pyproject.toml b/software/pyproject.toml +index c1151748..c3302e60 100644 +--- a/software/pyproject.toml ++++ b/software/pyproject.toml +@@ -29,30 +29,30 @@ requires-python = ">=3.11, <4" + dependencies = [ + # We use `typing` features not available in the lowest Python version we support. The library + # `typing_extensions` provides shims for such features. It uses SemVer. +- "typing_extensions>=4.8,<5", ++ "typing_extensions", + # Amaranth is the core of the Glasgow software/gateware interoperability layer. It uses SemVer. +- "amaranth>=0.5.7,<0.6", ++ "amaranth", + # `packaging` is used in the plugin system, `support.plugin`. It uses CalVer: the major version + # is the two last digits of the year and the minor version is the release within that year. +- "packaging>=23.0", ++ "packaging", + # `platformdirs` is used in the bitstream builder to use platform-appropriate cache directories. + # It uses SemVer. +- "platformdirs>=3.0.0,<5", ++ "platformdirs", + # `fx2` is effectively maintained together with Glasgow. It uses SemVer, and keeps backward + # compatibility within the 0.x release series. +- "fx2>=0.11,<1", ++ "fx2", + # `libusb1` is used to communicate with the device, and its API mirrors the stable API/ABI of + # of the native `libusb1` library. It increases major version when dropping support for older + # Python versions. +- "libusb1>=3.3.0; sys_platform!='emscripten'", ++ "libusb1; sys_platform!='emscripten'", + # `cobs` is used to multiplex communication streams in applets. It uses an ad-hoc versioning + # system. +- "cobs>=1.2.1", ++ "cobs", + # `pyvcd` is used in the applet analyzer to dump waveform files. It is also a dependency of + # Amaranth, and the version range here must be compatible with Amaranth's. +- "pyvcd>=0.4.1,<0.5", ++ "pyvcd", + # `importlib_resources` is used to shim over Python API incompatibilities. It uses SemVer. +- "importlib_resources~=6.5.2", ++ "importlib_resources", + ] + + [project.optional-dependencies] diff --git a/anda/tools/glasgow/update.rhai b/anda/tools/glasgow/update.rhai new file mode 100644 index 0000000000..9b91f749d9 --- /dev/null +++ b/anda/tools/glasgow/update.rhai @@ -0,0 +1,5 @@ +rpm.global("commit", gh_commit("GlasgowEmbedded/glasgow")); +if rpm.changed() { + rpm.release(); + rpm.global("commit_date", date()); +} diff --git a/anda/tools/graftcp/nightly/anda.hcl b/anda/tools/graftcp/nightly/anda.hcl new file mode 100644 index 0000000000..ec2b93230a --- /dev/null +++ b/anda/tools/graftcp/nightly/anda.hcl @@ -0,0 +1,8 @@ +project pkg { + rpm { + spec = "graftcp-nightly.spec" + } + labels { + nightly = 1 + } +} diff --git a/anda/tools/graftcp/nightly/graftcp-nightly.spec b/anda/tools/graftcp/nightly/graftcp-nightly.spec new file mode 100644 index 0000000000..1d62737758 --- /dev/null +++ b/anda/tools/graftcp/nightly/graftcp-nightly.spec @@ -0,0 +1,56 @@ +%global commit ebb5ad865f673ecbde1a628b75c5505bbd2bfd04 +%global commit_date 20250817 +%global shortcommit %(c=%{commit}; echo ${c:0:7}) + +Name: graftcp-nightly +Version: 0~%{commit_date}git.%{shortcommit} +Release: 1%?dist +Summary: A flexible tool for redirecting a given program's TCP traffic to SOCKS5 or HTTP proxy +URL: https://github.com/hmgle/graftcp +License: GPL-3.0 +Source0: %url/archive/%commit/graftcp-%commit.tar.gz +BuildRequires: gcc mold make golang systemd-rpm-macros +Packager: Owen Zimmerman +Conflicts: graftcp + +%description +graftcp can redirect the TCP connection made by the given program [application, script, shell, etc.] to SOCKS5 or HTTP proxy. + +Compared with tsocks, proxychains or proxychains-ng, graftcp is not using the LD_PRELOAD trick which only work for dynamically +linked programs, e.g., applications built by Go can not be hook by proxychains-ng. graftcp can trace or modify any given program's +connect by ptrace(2), so it is workable for any program. The principle will be explained in this paragraph of how does it work. + +%prep +%autosetup -n graftcp-%{commit} + +%build +%make_build + +%install +install -Dm755 graftcp %{buildroot}%{_bindir}/graftcp +install -Dm755 local/graftcp-local %{buildroot}%{_bindir}/graftcp-local +install -Dm755 local/mgraftcp %{buildroot}%{_bindir}/mgraftcp +install -Dm644 local/contrib/systemd/graftcp-local.service %{buildroot}%{_unitdir}/graftcp-local.service +install -Dm644 local/example-graftcp-local.conf %{buildroot}%{_sysconfdir}/graftcp-local/example-graftcp-local.conf + +%post +%systemd_post graftcp-local.service + +%preun +%systemd_preun graftcp-local.service + +%postun +%systemd_postun_with_restart graftcp-local.service + +%files +%doc README.md README.zh-CN.md +%license COPYING +%{_bindir}/graftcp +%{_bindir}/graftcp-local +%{_bindir}/mgraftcp +%{_unitdir}/graftcp-local.service +%{_sysconfdir}/graftcp-local/example-graftcp-local.conf + +%changelog +* Fri Oct 24 2025 Owen Zimmerman +- initial commit diff --git a/anda/tools/graftcp/nightly/update.rhai b/anda/tools/graftcp/nightly/update.rhai new file mode 100644 index 0000000000..00cb6078b9 --- /dev/null +++ b/anda/tools/graftcp/nightly/update.rhai @@ -0,0 +1,5 @@ +rpm.global("commit", gh_commit("hmgle/graftcp")); +if rpm.changed() { + rpm.release(); + rpm.global("commit_date", date()); +} diff --git a/anda/tools/graftcp/stable/anda.hcl b/anda/tools/graftcp/stable/anda.hcl new file mode 100644 index 0000000000..8a082224fb --- /dev/null +++ b/anda/tools/graftcp/stable/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "graftcp.spec" + } +} diff --git a/anda/tools/graftcp/stable/graftcp.spec b/anda/tools/graftcp/stable/graftcp.spec new file mode 100644 index 0000000000..a3201229ef --- /dev/null +++ b/anda/tools/graftcp/stable/graftcp.spec @@ -0,0 +1,52 @@ +Name: graftcp +Version: 0.7.1 +Release: 1%?dist +Summary: A flexible tool for redirecting a given program's TCP traffic to SOCKS5 or HTTP proxy +URL: https://github.com/hmgle/graftcp +License: GPL-3.0 +Source0: %url/archive/refs/tags/v%version.tar.gz +BuildRequires: gcc mold make golang systemd-rpm-macros +Packager: Owen Zimmerman +Conflicts: graftcp-nightly + +%description +graftcp can redirect the TCP connection made by the given program [application, script, shell, etc.] to SOCKS5 or HTTP proxy. + +Compared with tsocks, proxychains or proxychains-ng, graftcp is not using the LD_PRELOAD trick which only work for dynamically +linked programs, e.g., applications built by Go can not be hook by proxychains-ng. graftcp can trace or modify any given program's +connect by ptrace(2), so it is workable for any program. The principle will be explained in this paragraph of how does it work. + +%prep +%autosetup -n graftcp-%{version} + +%build +%make_build + +%install +install -Dm755 graftcp %{buildroot}%{_bindir}/graftcp +install -Dm755 local/graftcp-local %{buildroot}%{_bindir}/graftcp-local +install -Dm755 local/mgraftcp %{buildroot}%{_bindir}/mgraftcp +install -Dm644 local/contrib/systemd/graftcp-local.service %{buildroot}%{_unitdir}/graftcp-local.service +install -Dm644 local/example-graftcp-local.conf %{buildroot}%{_sysconfdir}/graftcp-local/example-graftcp-local.conf + +%post +%systemd_post graftcp-local.service + +%preun +%systemd_preun graftcp-local.service + +%postun +%systemd_postun_with_restart graftcp-local.service + +%files +%doc README.md README.zh-CN.md +%license COPYING +%{_bindir}/graftcp +%{_bindir}/graftcp-local +%{_bindir}/mgraftcp +%{_unitdir}/graftcp-local.service +%{_sysconfdir}/graftcp-local/example-graftcp-local.conf + +%changelog +* Fri Oct 24 2025 Owen Zimmerman +- initial commit diff --git a/anda/tools/graftcp/stable/update.rhai b/anda/tools/graftcp/stable/update.rhai new file mode 100644 index 0000000000..ebe7a2790c --- /dev/null +++ b/anda/tools/graftcp/stable/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("hmgle/graftcp")); diff --git a/anda/tools/kanata/rust-kanata.spec b/anda/tools/kanata/rust-kanata.spec index f840461334..a860e509e1 100644 --- a/anda/tools/kanata/rust-kanata.spec +++ b/anda/tools/kanata/rust-kanata.spec @@ -4,7 +4,7 @@ %global crate kanata Name: rust-kanata -Version: 1.9.0 +Version: 1.10.0 Release: 1%?dist Summary: Multi-layer keyboard customization diff --git a/anda/tools/mdbook/anda.hcl b/anda/tools/mdbook/anda.hcl new file mode 100644 index 0000000000..442f07baee --- /dev/null +++ b/anda/tools/mdbook/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "mdbook.spec" + } +} diff --git a/anda/tools/mdbook/mdbook.spec b/anda/tools/mdbook/mdbook.spec new file mode 100644 index 0000000000..5f8623a8fb --- /dev/null +++ b/anda/tools/mdbook/mdbook.spec @@ -0,0 +1,42 @@ +Name: mdBook +Version: 0.5.1 +Release: 1%?dist +Summary: Create a book from markdown files +License: MPL-2.0 AND MIT AND (Apache-2.0 OR MIT) AND Apache-2.0 AND (BSD-2-Clause OR Apache-2.0 OR MIT) AND CC0-1.0 AND ISC AND (MIT OR Zlib OR Apache-2.0) AND Unicode-3.0 AND (Apache-2.0 OR BSL-1.0) AND (MIT AND BSD-3-Clause) +URL: https://github.com/rust-lang/mdBook +Source0: %url/archive/refs/tags/v%{version}.tar.gz + +BuildRequires: anda-srpm-macros +BuildRequires: cargo-rpm-macros +BuildRequires: gcc +BuildRequires: cargo +BuildRequires: mold + +Packager: Owen Zimmerman + +Provides: mdbook + +%description +mdBook is a utility to create modern online books from Markdown files. + +%prep +%autosetup -n %{name}-%{version} +%cargo_prep_online + +%build +%cargo_build + +%install +%cargo_install +%cargo_license_summary_online +%{cargo_license_online -a} > LICENSE.dependencies + +%files +%doc README.md CONTRIBUTING.md CHANGELOG.md +%license LICENSE +%license LICENSE.dependencies +%{_bindir}/mdbook + +%changelog +* Mon Sep 01 2025 Owen Zimmerman +- Initial commit diff --git a/anda/tools/mdbook/update.rhai b/anda/tools/mdbook/update.rhai new file mode 100644 index 0000000000..d56cee7e69 --- /dev/null +++ b/anda/tools/mdbook/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("rust-lang/mdBook")); diff --git a/anda/tools/monita/anda.hcl b/anda/tools/monita/anda.hcl new file mode 100644 index 0000000000..c47096f5ae --- /dev/null +++ b/anda/tools/monita/anda.hcl @@ -0,0 +1,8 @@ +project pkg { + rpm { + spec = "monita.spec" + } + labels { + nightly = 1 + } +} diff --git a/anda/tools/monita/monita.spec b/anda/tools/monita/monita.spec new file mode 100644 index 0000000000..bc83d192b2 --- /dev/null +++ b/anda/tools/monita/monita.spec @@ -0,0 +1,38 @@ +%global commit 99bbb3b403bd8a29ae6a3ee78a89a0edac48b06d +%global shortcommit %{sub %commit 1 7} +%global commit_date 20251012 + +Name: monita +Version: 0~%{commit_date}git.%shortcommit +Release: 1%?dist +Summary: A modern, beautiful system monitor +License: GPL-3.0-only +URL: https://github.com/tau-OS/monita +Source0: %url/archive/%commit.tar.gz +Packager: madonuko +BuildRequires: meson vala +BuildRequires: pkgconfig(gtk4) +BuildRequires: pkgconfig(libhelium-1) +BuildRequires: pkgconfig(gee-0.8) +BuildRequires: pkgconfig(libgtop-2.0) +BuildRequires: %_bindir/update-desktop-database + +%description +A modern, beautiful system monitor for Linux built with GTK4 and libhelium. + +%prep +%autosetup -n %name-%commit + +%build +%meson +%meson_build + +%install +%meson_install + +%files +%doc README.md +%license COPYING +%_bindir/com.fyralabs.Monita +%_datadir/applications/com.fyralabs.Monita.desktop +%_iconsdir/hicolor/*/apps/com.fyralabs.Monita.svg diff --git a/anda/tools/monita/update.rhai b/anda/tools/monita/update.rhai new file mode 100644 index 0000000000..0871193951 --- /dev/null +++ b/anda/tools/monita/update.rhai @@ -0,0 +1,5 @@ +rpm.global("commit", gh_commit("tau-OS/monita")); +if rpm.changed() { + rpm.release(); + rpm.global("date", date()); +} diff --git a/anda/tools/natscli/anda.hcl b/anda/tools/natscli/anda.hcl new file mode 100644 index 0000000000..1ddcd48556 --- /dev/null +++ b/anda/tools/natscli/anda.hcl @@ -0,0 +1,8 @@ +project pkg { + rpm { + spec = "natscli.spec" + } + labels { + nightly = 1 + } +} diff --git a/anda/tools/natscli/natscli.spec b/anda/tools/natscli/natscli.spec new file mode 100644 index 0000000000..abb4c835fa --- /dev/null +++ b/anda/tools/natscli/natscli.spec @@ -0,0 +1,46 @@ +# https://github.com/nats-io/natscli +%global goipath github.com/nats-io/natscli +%global commit 9cebb956791ff8f9f10d35f11af8d471af0cdbd8 +%global commit_date 20251113 +%global shortcommit %{sub %{commit} 1 7} + +%gometa -f + +Name: natscli +Version: 0~%{commit_date}git.%shortcommit +Release: 1%?dist +Summary: The NATS Command Line Interface + +License: Apache-2.0 +URL: %{gourl} +Source0: %{gosource} + +Packager: Ruka + +BuildRequires: go +BuildRequires: git +BuildRequires: anda-srpm-macros + +%description +A command line utility to interact with and manage NATS. + +%prep +%goprep -A + +%build +%define currentgoldflags -X main.version=%{version} -X main.commit=%{commit} -X main.date=%{commit_date} +%define gomodulesmode GO111MODULE=on +%gobuild -o %{gobuilddir}/bin/nats %{goipath}/nats + +%install +install -m 0755 -vd %{buildroot}%{_bindir} +install -m 0755 -vp %{gobuilddir}/bin/* %{buildroot}%{_bindir}/ + +%files +%license LICENSE +%doc README.md AUTH.md LOCAL_DEVELOPMENT.md cli/cheats/* +%{_bindir}/nats + +%changelog +* Fri Sep 19 2025 Ruka - 0~20250919git.607ceaa-1 +- Initial packaging for Terra PKG diff --git a/anda/tools/natscli/update.rhai b/anda/tools/natscli/update.rhai new file mode 100644 index 0000000000..c00ddfcbd3 --- /dev/null +++ b/anda/tools/natscli/update.rhai @@ -0,0 +1,5 @@ +rpm.global("commit", gh_commit("nats-io/natscli")); +if rpm.changed() { + rpm.release(); + rpm.global("commit_date", date()); +} \ No newline at end of file diff --git a/anda/tools/neovim-default-editor/neovim-default-editor.spec b/anda/tools/neovim-default-editor/neovim-default-editor.spec index 59b3e84b93..153ccf3876 100644 --- a/anda/tools/neovim-default-editor/neovim-default-editor.spec +++ b/anda/tools/neovim-default-editor/neovim-default-editor.spec @@ -2,8 +2,8 @@ Name: neovim-default-editor # Version, release, and epoch are inherited from the editor package just like other default editors -Version: 0.5.2 -Release: 7%?dist +Version: 0.11.5 +Release: 1%?dist Epoch: 0 # Inherited from Neovim itself License: Apache-2.0 AND Vim AND MIT diff --git a/anda/tools/nerdfetch/nerdfetch-tools.spec b/anda/tools/nerdfetch/nerdfetch-tools.spec index c96ddd8fa1..677801eed0 100644 --- a/anda/tools/nerdfetch/nerdfetch-tools.spec +++ b/anda/tools/nerdfetch/nerdfetch-tools.spec @@ -1,5 +1,5 @@ Name: nerdfetch -Version: 8.4.0 +Version: 8.4.2 Release: 1%?dist Summary: A POSIX *nix fetch script using Nerdfonts diff --git a/anda/tools/nvidia/cuda-crt/anda.hcl b/anda/tools/nvidia/cuda-crt/anda.hcl new file mode 100644 index 0000000000..f1e8efbdce --- /dev/null +++ b/anda/tools/nvidia/cuda-crt/anda.hcl @@ -0,0 +1,9 @@ +project "pkg" { + rpm { + spec = "cuda-crt.spec" + } + labels { + updbranch = 1 + subrepo = "nvidia" + } +} diff --git a/anda/tools/nvidia/cuda-crt/cuda-crt.spec b/anda/tools/nvidia/cuda-crt/cuda-crt.spec new file mode 100644 index 0000000000..c8705c4a57 --- /dev/null +++ b/anda/tools/nvidia/cuda-crt/cuda-crt.spec @@ -0,0 +1,44 @@ +%global real_name cuda_crt + +%global debug_package %{nil} +%global __strip /bin/true +%global _missing_build_ids_terminate_build 0 +%global _build_id_links none +%global major_package_version 13-0 + +Name: %(echo %real_name | tr '_' '-') +Epoch: 1 +Version: 13.0.88 +Release: 1%{?dist} +Summary: CUDA crt +License: CUDA Toolkit +URL: https://developer.nvidia.com/cuda-toolkit +ExclusiveArch: x86_64 aarch64 + +Source0: https://developer.download.nvidia.com/compute/cuda/redist/%{real_name}/linux-x86_64/%{real_name}-linux-x86_64-%{version}-archive.tar.xz +Source1: https://developer.download.nvidia.com/compute/cuda/redist/%{real_name}/linux-sbsa/%{real_name}-linux-sbsa-%{version}-archive.tar.xz + +Conflicts: %{name}-%{major_package_version} < %{?epoch:%{epoch}:}%{version}-%{release} + +%description +CUDA crt Compiler for CUDA applications. + +%prep +%ifarch x86_64 +%setup -q -n %{real_name}-linux-x86_64-%{version}-archive +%endif + +%ifarch aarch64 +%setup -q -T -b 1 -n %{real_name}-linux-sbsa-%{version}-archive +%endif + +%install +mkdir -p %{buildroot}%{_includedir} +cp -fra include/crt %{buildroot}%{_includedir}/ + +%files +%license LICENSE +%{_includedir}/crt + +%changelog +%autochangelog diff --git a/anda/tools/nvidia/cuda-crt/update.rhai b/anda/tools/nvidia/cuda-crt/update.rhai new file mode 100644 index 0000000000..8b2472ef83 --- /dev/null +++ b/anda/tools/nvidia/cuda-crt/update.rhai @@ -0,0 +1,3 @@ +import "andax/nvidia.rhai" as nvidia; + +rpm.version(nvidia::nvidia_component_version("cuda_crt")); diff --git a/anda/tools/nvidia/cuda-ctadvisor/anda.hcl b/anda/tools/nvidia/cuda-ctadvisor/anda.hcl new file mode 100644 index 0000000000..8f15a0fcd5 --- /dev/null +++ b/anda/tools/nvidia/cuda-ctadvisor/anda.hcl @@ -0,0 +1,9 @@ +project "pkg" { + rpm { + spec = "cuda-ctadvisor.spec" + } + labels { + updbranch = 1 + subrepo = "nvidia" + } +} diff --git a/anda/tools/nvidia/cuda-ctadvisor/cuda-ctadvisor.spec b/anda/tools/nvidia/cuda-ctadvisor/cuda-ctadvisor.spec new file mode 100644 index 0000000000..2377f0257c --- /dev/null +++ b/anda/tools/nvidia/cuda-ctadvisor/cuda-ctadvisor.spec @@ -0,0 +1,44 @@ +%global real_name cuda_ctadvisor + +%global debug_package %{nil} +%global __strip /bin/true +%global _missing_build_ids_terminate_build 0 +%global _build_id_links none +%global major_package_version 13-0 + +Name: %(echo %real_name | tr '_' '-') +Epoch: 1 +Version: 13.0.85 +Release: 1%{?dist} +Summary: CUDA ctadvisor +License: CUDA Toolkit +URL: https://developer.nvidia.com/cuda-toolkit +ExclusiveArch: x86_64 aarch64 + +Source0: https://developer.download.nvidia.com/compute/cuda/redist/%{real_name}/linux-x86_64/%{real_name}-linux-x86_64-%{version}-archive.tar.xz +Source1: https://developer.download.nvidia.com/compute/cuda/redist/%{real_name}/linux-sbsa/%{real_name}-linux-sbsa-%{version}-archive.tar.xz + +Conflicts: %{name}-%{major_package_version} < %{?epoch:%{epoch}:}%{version}-%{release} + +%description +CUDA ctadvisor is a tool that analyzes trace files generated by NVCC and NVRTC, +and emits advices to reduce compilation time. + +%prep +%ifarch x86_64 +%setup -q -n %{real_name}-linux-x86_64-%{version}-archive +%endif + +%ifarch aarch64 +%setup -q -T -b 1 -n %{real_name}-linux-sbsa-%{version}-archive +%endif + +%install +install -p -m 0755 -D bin/ctadvisor %{buildroot}%{_bindir}/ctadvisor + +%files +%license LICENSE +%{_bindir}/ctadvisor + +%changelog +%autochangelog diff --git a/anda/tools/nvidia/cuda-ctadvisor/update.rhai b/anda/tools/nvidia/cuda-ctadvisor/update.rhai new file mode 100644 index 0000000000..3b1ea76ace --- /dev/null +++ b/anda/tools/nvidia/cuda-ctadvisor/update.rhai @@ -0,0 +1,3 @@ +import "andax/nvidia.rhai" as nvidia; + +rpm.version(nvidia::nvidia_component_version("cuda_ctadvisor")); diff --git a/anda/tools/cuda-gcc/anda.hcl b/anda/tools/nvidia/cuda-gcc/anda.hcl similarity index 100% rename from anda/tools/cuda-gcc/anda.hcl rename to anda/tools/nvidia/cuda-gcc/anda.hcl diff --git a/anda/tools/cuda-gcc/cuda-gcc.spec b/anda/tools/nvidia/cuda-gcc/cuda-gcc.spec similarity index 100% rename from anda/tools/cuda-gcc/cuda-gcc.spec rename to anda/tools/nvidia/cuda-gcc/cuda-gcc.spec diff --git a/anda/tools/cuda-gcc/update.rhai b/anda/tools/nvidia/cuda-gcc/update.rhai similarity index 100% rename from anda/tools/cuda-gcc/update.rhai rename to anda/tools/nvidia/cuda-gcc/update.rhai diff --git a/anda/tools/cuda-nvcc/anda.hcl b/anda/tools/nvidia/cuda-nvcc/anda.hcl similarity index 100% rename from anda/tools/cuda-nvcc/anda.hcl rename to anda/tools/nvidia/cuda-nvcc/anda.hcl diff --git a/anda/tools/cuda-nvcc/cuda-nvcc.spec b/anda/tools/nvidia/cuda-nvcc/cuda-nvcc.spec similarity index 53% rename from anda/tools/cuda-nvcc/cuda-nvcc.spec rename to anda/tools/nvidia/cuda-nvcc/cuda-nvcc.spec index 3c862a3f32..d59e2112f1 100644 --- a/anda/tools/cuda-nvcc/cuda-nvcc.spec +++ b/anda/tools/nvidia/cuda-nvcc/cuda-nvcc.spec @@ -4,12 +4,12 @@ %global __strip /bin/true %global _missing_build_ids_terminate_build 0 %global _build_id_links none -%global major_package_version 12-8 +%global major_package_version 13-0 Name: %(echo %real_name | tr '_' '-') Epoch: 1 -Version: 13.0.48 -Release: 1%?dist +Version: 13.0.88 +Release: 4%{?dist} Summary: CUDA Compiler (NVCC) License: CUDA Toolkit URL: https://developer.nvidia.com/cuda-toolkit @@ -21,15 +21,20 @@ Source3: nvcc.profile Conflicts: %{name}-%{major_package_version} < %{?epoch:%{epoch}:}%{version}-%{release} -# CUDA 12.8 does not support GCC 15+: -%if 0%{?fedora} >= 42 +# CUDA 13.0 does not support GCC 16+: +%if 0%{?fedora} >= 44 Requires: cuda-gcc %else -# CUDA 12.8 supports GCC 14: +# But it supports GCC 14, so obsolete the wrapper in case of an upgrade: Obsoletes: cuda-gcc Provides: cuda-gcc %endif +Requires: cuda-crt +Requires: cuda-cudart-devel +Requires: libnvptxcompiler-devel +Requires: libnvvm-devel + %description The compilation trajectory involves several splitting, compilation, preprocessing, and merging steps for each CUDA source file. It is the purpose of @@ -40,12 +45,6 @@ the compilation process. All non-CUDA compilation steps are forwarded to a C++ host compiler that is supported by nvcc, and nvcc translates its options to appropriate host compiler command line options. -NVVM IR is a compiler IR (intermediate representation) based on the LLVM IR. -The NVVM IR is designed to represent GPU compute kernels (for example, CUDA -kernels). High-level language front-ends, like the CUDA C compiler front-end, -can generate NVVM IR. The NVVM compiler (which is based on LLVM) generates PTX -code from NVVM IR. - %prep %ifarch x86_64 %setup -q -n %{real_name}-linux-x86_64-%{version}-archive @@ -57,74 +56,35 @@ code from NVVM IR. %install mkdir -p %{buildroot}%{_bindir} - mkdir -p %{buildroot}%{_includedir} -mkdir -p %{buildroot}%{_libdir} -mkdir -p %{buildroot}%{_datadir}/nvcc/ -cp -fr bin/* nvvm/bin/* %{buildroot}%{_bindir}/ -cp -fr include/* nvvm/include/* %{buildroot}%{_includedir}/ -cp -fr lib/* nvvm/lib64/* %{buildroot}%{_libdir}/ -cp -fr nvvm/libdevice/* %{buildroot}%{_datadir}/nvcc/ +cp -fr bin/* %{buildroot}%{_bindir}/ +cp -fr include/* %{buildroot}%{_includedir}/ cp -f %{SOURCE3} %{buildroot}%{_bindir}/ # Set proper variables sed -i \ + -e 's|PREFIX|%{_prefix}|g' \ + -e 's|BINDIR|%{_bindir}|g' \ -e 's|LIBDIR|%{_libdir}|g' \ - -e 's|INCLUDE_DIR|%{_includedir}/cuda|g' \ + -e 's|INCLUDE_DIR|%{_includedir}|g' \ %{buildroot}/%{_bindir}/nvcc.profile %files %license LICENSE +%{_bindir}/__nvcc_device_query %{_bindir}/bin2c -%{_bindir}/cicc %dir %{_bindir}/crt/ %{_bindir}/crt/link.stub %{_bindir}/crt/prelink.stub %{_bindir}/cudafe++ %{_bindir}/fatbinary %{_bindir}/nvcc -%{_bindir}/__nvcc_device_query %{_bindir}/nvcc.profile %{_bindir}/nvlink %{_bindir}/ptxas -%dir %{_datadir}/nvcc/ -%{_datadir}/nvcc/libdevice.10.bc -%dir %{_includedir}/crt/ -%{_includedir}/crt/common_functions.h -%{_includedir}/crt/cudacc_ext.h -%{_includedir}/crt/device_double_functions.h -%{_includedir}/crt/device_double_functions.hpp -%{_includedir}/crt/device_fp128_functions.h -%{_includedir}/crt/device_functions.h -%{_includedir}/crt/device_functions.hpp -%{_includedir}/crt/func_macro.h -%{_includedir}/crt/host_config.h -%{_includedir}/crt/host_defines.h -%{_includedir}/crt/host_runtime.h -%{_includedir}/crt/math_functions.h -%{_includedir}/crt/math_functions.hpp -%{_includedir}/crt/mma.h -%{_includedir}/crt/mma.hpp -%{_includedir}/crt/nvfunctional -%{_includedir}/crt/sm_70_rt.h -%{_includedir}/crt/sm_70_rt.hpp -%{_includedir}/crt/sm_80_rt.h -%{_includedir}/crt/sm_80_rt.hpp -%{_includedir}/crt/sm_90_rt.h -%{_includedir}/crt/sm_90_rt.hpp -%{_includedir}/crt/sm_100_rt.h -%{_includedir}/crt/sm_100_rt.hpp -%{_includedir}/crt/storage_class.h %{_includedir}/fatbinary_section.h -%{_includedir}/nvPTXCompiler.h -%{_includedir}/nvvm.h - -%{_libdir}/libnvptxcompiler_static.a -%{_libdir}/libnvvm.so -%{_libdir}/libnvvm.so.4 -%{_libdir}/libnvvm.so.4.0.0 %changelog %autochangelog diff --git a/anda/tools/nvidia/cuda-nvcc/nvcc.profile b/anda/tools/nvidia/cuda-nvcc/nvcc.profile new file mode 100644 index 0000000000..b3ca6ade5d --- /dev/null +++ b/anda/tools/nvidia/cuda-nvcc/nvcc.profile @@ -0,0 +1,6 @@ +CICC_PATH = BINDIR +NVVMIR_LIBRARY_DIR = PREFIX/nvvm/libdevice +INCLUDES += "-IINCLUDE_DIR/cccl" +LIBRARIES =+ "-LLIBDIR" +CUDAFE_FLAGS += +PTXAS_FLAGS += diff --git a/anda/tools/cuda-nvcc/update.rhai b/anda/tools/nvidia/cuda-nvcc/update.rhai similarity index 100% rename from anda/tools/cuda-nvcc/update.rhai rename to anda/tools/nvidia/cuda-nvcc/update.rhai diff --git a/anda/tools/piclone/anda.hcl b/anda/tools/piclone/anda.hcl index d44a7bd214..8f37511ca4 100644 --- a/anda/tools/piclone/anda.hcl +++ b/anda/tools/piclone/anda.hcl @@ -2,4 +2,7 @@ project pkg { rpm { spec = "piclone.spec" } + labels { + nightly = 1 + } } diff --git a/anda/tools/piclone/piclone.spec b/anda/tools/piclone/piclone.spec index d94b54ef74..e763bc3f97 100644 --- a/anda/tools/piclone/piclone.spec +++ b/anda/tools/piclone/piclone.spec @@ -1,5 +1,5 @@ -%global commit 2d0d97cd76d9e570c14cf18ef3d6369d2513d13a -%global commit_date 20250327 +%global commit 7d705d0a65c027bb39825bf428fe7c5316411197 +%global commit_date 20251014 %global shortcommit %(c=%{commit}; echo ${c:0:7}) Name: piclone diff --git a/anda/tools/qmk_cli/anda.hcl b/anda/tools/qmk_cli/anda.hcl new file mode 100644 index 0000000000..af0f652324 --- /dev/null +++ b/anda/tools/qmk_cli/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "qmk_cli.spec" + } +} diff --git a/anda/tools/qmk_cli/qmk_cli.spec b/anda/tools/qmk_cli/qmk_cli.spec new file mode 100644 index 0000000000..17f906f309 --- /dev/null +++ b/anda/tools/qmk_cli/qmk_cli.spec @@ -0,0 +1,77 @@ +%define debug_package %nil +%global pypi_name qmk_cli +%global _desc The QMK CLI (command line interface) makes building and working with QMK keyboards easier. We have provided a number of commands to simplify and streamline tasks such as obtaining and compiling the QMK firmware, creating keymaps, and more. + + +Name: python-%{pypi_name} +Version: 1.1.8 +Release: 3%?dist +Summary: A program to help users work with QMK +License: MIT +URL: https://github.com/qmk/qmk_cli +Source0: %url/archive/refs/tags/%version.tar.gz +BuildArch: noarch + +BuildRequires: python3-devel +BuildRequires: python3-pip +BuildRequires: python3dist(setuptools) +BuildRequires: git + +Requires: python3 +Requires: python3-platformdirs +Requires: python3-argcomplete +Requires: python3-colorama +Requires: python3-jsonschema +Requires: git +Requires: avr-gcc +Requires: arm-none-eabi-gcc +Requires: avr-libc +Requires: arm-none-eabi-binutils +Requires: arm-none-eabi-newlib +Requires: avr-binutils +Requires: dfu-programmer +Requires: dfu-util +Requires: avrdude +Requires: python3-hjson +Requires: python3-pygments +Requires: python3-hid +Requires: python3-pyusb +Requires: python3-pyserial +Requires: python3-pillow + +Packager: Owen Zimmerman + +%description +%_desc + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: qmk +Provides: qmk_cli +Provides: qmk-cli +%{?python_provide:%python_provide python3-%{pypi_name}} + +%description -n python3-%{pypi_name} +%_desc + +%prep +%autosetup -n qmk_cli-%version + +%build +%pyproject_wheel + +%install +%pyproject_install +%pyproject_save_files qmk_cli + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.md SECURITY.md +%license LICENSE +%{_bindir}/qmk +%ghost %python3_sitelib/__pycache__/*.cpython-*.pyc +%ghost %python3_sitelib/%{name}/subcommands/__pycache__/*.cpython-*.pyc +%python3_sitelib/qmk-%version.dist-info/* + +%changelog +* Thu Sep 04 2025 Owen Zimmerman +- Initial commit diff --git a/anda/tools/qmk_cli/update.rhai b/anda/tools/qmk_cli/update.rhai new file mode 100644 index 0000000000..7a8aa73deb --- /dev/null +++ b/anda/tools/qmk_cli/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("qmk/qmk_cli")); diff --git a/anda/tools/raindrop/anda.hcl b/anda/tools/raindrop/anda.hcl index 8371ca9704..e2495bf153 100644 --- a/anda/tools/raindrop/anda.hcl +++ b/anda/tools/raindrop/anda.hcl @@ -2,4 +2,7 @@ project pkg { rpm { spec = "raindrop.spec" } + labels { + nightly = 1 + } } diff --git a/anda/tools/raindrop/raindrop.spec b/anda/tools/raindrop/raindrop.spec index f86fe7dc1c..18c86cd1f5 100644 --- a/anda/tools/raindrop/raindrop.spec +++ b/anda/tools/raindrop/raindrop.spec @@ -1,5 +1,5 @@ -%global commit 66271d1eea4740131bae3aaec499a7ce06441ace -%global commit_date 20250530 +%global commit 74c88be096c8fe7d1795158eda900c3c5a634238 +%global commit_date 20251030 %global shortcommit %(c=%{commit}; echo ${c:0:7}) Name: raindrop diff --git a/anda/tools/rpi-utils/rpi-utils.spec b/anda/tools/rpi-utils/rpi-utils.spec index 65109d75f2..d2f65f7e6e 100644 --- a/anda/tools/rpi-utils/rpi-utils.spec +++ b/anda/tools/rpi-utils/rpi-utils.spec @@ -1,5 +1,5 @@ -%global commit 49621512ec33a52432aa826441f058ba8da2c3af -%global commit_date 20250828 +%global commit 6e0779b1c552976e0da2374c0325a8c9c77b6010 +%global commit_date 20251120 %global shortcommit %(c=%{commit}; echo ${c:0:7}) %define _unpackaged_files_terminate_build 0 diff --git a/anda/tools/rustypaste/anda.hcl b/anda/tools/rustypaste/anda.hcl new file mode 100644 index 0000000000..bea61f3031 --- /dev/null +++ b/anda/tools/rustypaste/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "rustypaste.spec" + } +} diff --git a/anda/tools/rustypaste/rustypaste.spec b/anda/tools/rustypaste/rustypaste.spec new file mode 100644 index 0000000000..fa65d5f853 --- /dev/null +++ b/anda/tools/rustypaste/rustypaste.spec @@ -0,0 +1,62 @@ +%define __brp_mangle_shebangs %{nil} + +Name: rustypaste +Version: 0.16.1 +Release: 1%?dist +Summary: A minimal file upload/pastebin service +License: MIT +URL: https://github.com/orhun/rustypaste +Source0: %url/archive/refs/tags/v%{version}.tar.gz + +BuildRequires: anda-srpm-macros +BuildRequires: cargo-rpm-macros +BuildRequires: gcc +BuildRequires: cargo +BuildRequires: mold +BuildRequires: systemd-rpm-macros + +Packager: Owen Zimmerman + +%description +%{summary}. + +%prep +%autosetup -n %{name}-%{version} +%cargo_prep_online + +%build +%cargo_build + +%install +install -Dm755 target/rpm/rustypaste %{buildroot}%{_bindir}/rustypaste +install -Dm644 config.toml %{buildroot}%{_sysconfdir}/rustypaste/config.toml +install -Dm644 extra/systemd/rustypaste.env %{buildroot}%{_sysconfdir}/rustypaste/rustypaste.env +install -Dm644 extra/systemd/rustypaste.service %{buildroot}/usr/lib/systemd/system/rustypaste.service +install -Dm644 extra/systemd257+/rustypaste.sysusers %{buildroot}/usr/lib/sysusers.d/rustypaste.conf +install -Dm644 extra/systemd/rustypaste.tmpfiles %{buildroot}/usr/lib/tmpfiles.d/rustypaste.conf +%cargo_license_summary_online +%{cargo_license_online -a} > LICENSE.dependencies + +%post +%systemd_post swayosd-libinput-backend.service + +%preun +%systemd_preun swayosd-libinput-backend.service + +%postun +%systemd_postun_with_restart swayosd-libinput-backend.service + +%files +%doc README.md CHANGELOG.md RELEASE.md +%license LICENSE +%license LICENSE.dependencies +%{_bindir}/rustypaste +%{_sysconfdir}/rustypaste/config.toml +%{_sysconfdir}/rustypaste/rustypaste.env +%{_unitdir}/rustypaste.service +%{_sysusersdir}/rustypaste.conf +%{_tmpfilesdir}/rustypaste.conf + +%changelog +* Thu Nov 13 2025 Owen Zimmerman +- Initial commit diff --git a/anda/tools/rustypaste/update.rhai b/anda/tools/rustypaste/update.rhai new file mode 100644 index 0000000000..41404c1e74 --- /dev/null +++ b/anda/tools/rustypaste/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("orhun/rustypaste")); \ No newline at end of file diff --git a/anda/tools/sbctl/91-sbctl-rm b/anda/tools/sbctl/91-sbctl-rm new file mode 100644 index 0000000000..247852a75a --- /dev/null +++ b/anda/tools/sbctl/91-sbctl-rm @@ -0,0 +1,41 @@ +#!/usr/bin/sh +# This file is part of sbctl. +# Patched for Fedora, for the Terra repository + +#shellcheck disable=SC2034 +# Enable xtrace if we're verbose +if [ "${KERNEL_INSTALL_VERBOSE:-0}" = "1" ]; then + set -x +fi + +ver=${1} +img=${2} + + +die() { + echo -e " ${NOCOLOR-\e[1;31m*\e[0m }${*}" >&2 + exit 1 +} + +einfo() { + echo -e " ${NOCOLOR-\e[1;32m*\e[0m }${*}" +} + +main() { + # re-define for subst to work + [[ -n ${NOCOLOR+yes} ]] && NOCOLOR= + einfo "Unregistering kernel file from sbctl" + # do nothing if secureboot key directory doesn't exist + if ! [ "$(sbctl setup --print-state --json | awk '/installed/ { gsub(/,$/,"",$2); print $2 }')" = "true" ]; then + einfo "Secureboot key directory doesn't exist, not signing!" + exit 0 + fi + + [[ ${EUID} -eq 0 ]] || die "Please run this script as root" + + einfo "sbctl: Unregistering kernel $img" + sbctl remove-file $img +} + +main + diff --git a/anda/tools/sbctl/91-sbctl-sign b/anda/tools/sbctl/91-sbctl-sign new file mode 100755 index 0000000000..35bb741ac3 --- /dev/null +++ b/anda/tools/sbctl/91-sbctl-sign @@ -0,0 +1,40 @@ +#!/usr/bin/sh +# This file is part of sbctl. +# Patched for Fedora, for the Terra repository + +#shellcheck disable=SC2034 +# Enable xtrace if we're verbose +if [ "${KERNEL_INSTALL_VERBOSE:-0}" = "1" ]; then + set -x +fi + +ver=${1} +img=${2} + +die() { + echo -e " ${NOCOLOR-\e[1;31m*\e[0m }${*}" >&2 + exit 1 +} + +einfo() { + echo -e " ${NOCOLOR-\e[1;32m*\e[0m }${*}" +} + +main() { + # re-define for subst to work + [[ -n ${NOCOLOR+yes} ]] && NOCOLOR= + einfo "Running kernel install script" + # do nothing if secureboot key directory doesn't exist + if ! [ "$(sbctl setup --print-state --json | awk '/installed/ { gsub(/,$/,"",$2); print $2 }')" = "true" ]; then + einfo "Secureboot key directory doesn't exist, not signing!" + exit 0 + fi + + [[ ${EUID} -eq 0 ]] || die "Please run this script as root" + + einfo "sbctl: Signing kernel $img" + sbctl sign -s $img +} + +main + diff --git a/anda/tools/sbctl/sbctl.spec b/anda/tools/sbctl/sbctl.spec index 2de66554d7..11cbc18f7e 100644 --- a/anda/tools/sbctl/sbctl.spec +++ b/anda/tools/sbctl/sbctl.spec @@ -1,5 +1,5 @@ Name: sbctl -Version: 0.17 +Version: 0.18 Release: 3%?dist Summary: Secure Boot key manager @@ -9,6 +9,9 @@ Source0: https://github.com/Foxboron/sbctl/releases/download/%{version}/s ## Based on CachyOS's batch sign script # https://github.com/CachyOS/CachyOS-Settings/blob/master/usr/bin/sbctl-batch-sign Source1: %{name}-batch-sign +# Downstream postinst hook +Source2: 91-sbctl-sign +Source3: 91-sbctl-rm ExclusiveArch: %{golang_arches} @@ -21,6 +24,7 @@ Recommends: systemd-udev BuildRequires: asciidoc BuildRequires: git BuildRequires: go-rpm-macros +BuildRequires: pkgconfig(libpcsclite) %description sbctl intends to be a user-friendly secure boot key manager capable of setting @@ -37,7 +41,7 @@ sed -i '/go build/d' Makefile %build export GOPATH=%{_builddir}/go %global gomodulesmode GO111MODULE=on -%gobuild -o sbctl ./cmd/sbctl +%gobuild -o sbctl ./cmd/sbctl %make_build @@ -45,7 +49,15 @@ export GOPATH=%{_builddir}/go %make_install PREFIX=%{_prefix} install -Dm755 %{SOURCE1} -t %{buildroot}%{_bindir} -%transfiletriggerin -P 1 -- /boot /efi /usr/lib /usr/libexec +# This script is actually broken on Fedora +rm -f %{buildroot}%{_prefix}/lib/kernel/install.d/91-sbctl.install +rm -f %{buildroot}%{_prefix}/lib/kernel/postinst.d/91-sbctl.install + +# 95-kernel-hooks.install only runs postinst scripts from /etc, so install it there +install -Dm755 %{SOURCE2} -t %{buildroot}%{_sysconfdir}/kernel/postinst.d +install -Dm755 %{SOURCE3} -t %{buildroot}%{_sysconfdir}/kernel/prerm.d + +%transfiletriggerin -P 1 -- /efi /usr/lib /usr/libexec if [[ ! -f /run/ostree-booted ]] && grep -q -m 1 -e '\.efi$' -e '/vmlinuz$'; then exec LICENSE.dependencies + +%install +%cargo_install + +%changelog +* Tue Jul 02 2024 Andrey Brusnik - 15.0.0-1 +- chore(topgrade): Bump to 15.0.0 + +* Tue Jun 18 2024 Andrey Brusnik - 14.0.1-1 +- feat: Added topgrade package diff --git a/anda/tools/topgrade/topgrade-fix-metadata-auto.diff b/anda/tools/topgrade/topgrade-fix-metadata-auto.diff index 8c876d4f4b..dc74d1e1f1 100644 --- a/anda/tools/topgrade/topgrade-fix-metadata-auto.diff +++ b/anda/tools/topgrade/topgrade-fix-metadata-auto.diff @@ -1,9 +1,12 @@ ---- topgrade-16.0.2/Cargo.toml 1970-01-01T00:00:01+00:00 -+++ topgrade-16.0.2/Cargo.toml 2025-01-03T04:51:04.571554+00:00 -@@ -204,19 +204,3 @@ +--- topgrade-16.2.1/Cargo.toml 1970-01-01T00:00:01+00:00 ++++ topgrade-16.2.1/Cargo.toml 2025-11-11T08:14:26.891440+00:00 +@@ -246,26 +246,3 @@ default-features = false package = "self_update" +-[target."cfg(windows)".dependencies.is_elevated] +-version = "~0.1" +- -[target."cfg(windows)".dependencies.parselnk] -version = "~0.1" - @@ -18,5 +21,9 @@ -default-features = false -package = "self_update" - --[target."cfg(windows)".dependencies.winapi] --version = "~0.3" +-[target."cfg(windows)".dependencies.windows] +-version = "~0.62" +-features = ["Win32_System_Console"] +- +-[target."cfg(windows)".dependencies.windows-registry] +-version = "~0.6" diff --git a/anda/tools/topgrade/topgrade.spec b/anda/tools/topgrade/topgrade.spec deleted file mode 100644 index 28a1ae044c..0000000000 --- a/anda/tools/topgrade/topgrade.spec +++ /dev/null @@ -1,107 +0,0 @@ -%global __brp_mangle_shebangs %{nil} -%global crate topgrade - -Name: topgrade -# renovate: datasource=github-releases depName=topgrade-rs/topgrade -Version: 16.0.4 -Release: 1%?dist -Summary: Upgrade all the things - -SourceLicense: GPL-3.0-or-later -License: ((MIT OR Apache-2.0) AND Unicode-DFS-2016) AND (0BSD OR MIT OR Apache-2.0) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND GPL-3.0 AND MIT AND (MIT OR Apache-2.0) AND (MIT OR Zlib OR Apache-2.0) AND MPL-2.0 AND (Unlicense OR MIT) -URL: https://github.com/topgrade-rs/%{name} -Source: %crates_source -# Automatically generated patch to strip dependencies and normalize metadata -Patch: topgrade-fix-metadata-auto.diff - -BuildRequires: cargo -BuildRequires: rust -BuildRequires: rpm_macro(cargo_install) -BuildRequires: anda-srpm-macros mold - -%description -Keeping your system up to date usually involves invoking multiple package managers. -This results in big, non-portable shell one-liners saved in your shell. -To remedy this, Topgrade detects which tools you use and -runs the appropriate commands to update them. - -%global _description %{expand: -Upgrade all the things.} - -%package -n rust-%name-devel -Summary: %{summary} -BuildArch: noarch - -%description -n rust-%name-devel %{_description} - -This package contains library source intended for building other packages which -use the "%{crate}" crate. - -%files -n rust-%name-devel -%dnl %license %{crate_instdir}/LICENSE -%dnl %doc %{crate_instdir}/BREAKINGCHANGES.md -%dnl %doc %{crate_instdir}/CODE_OF_CONDUCT.md -%dnl %doc %{crate_instdir}/CONTRIBUTING.md -%dnl %doc %{crate_instdir}/README.md -%dnl %doc %{crate_instdir}/RELEASE_PROCEDURE.md -%dnl %doc %{crate_instdir}/SECURITY.md -%{crate_instdir}/ - -%package -n rust-%{name}+default-devel -Summary: %{summary} -BuildArch: noarch - -%description -n rust-%{name}+default-devel %{_description} - -This package contains library source intended for building other packages which -use the "default" feature of the "%{crate}" crate. - -%files -n rust-%{name}+default-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n rust-%{name}+self-update-devel -Summary: %{summary} -BuildArch: noarch - -%description -n rust-%{name}+self-update-devel %{_description} - -This package contains library source intended for building other packages which -use the "self-update" feature of the "%{crate}" crate. - -%files -n rust-%{name}+self-update-devel -%ghost %{crate_instdir}/Cargo.toml - -%package -n rust-%{name}+self_update_crate-devel -Summary: %{summary} -BuildArch: noarch - -%description -n rust-%{name}+self_update_crate-devel %{_description} - -This package contains library source intended for building other packages which -use the "self_update_crate" feature of the "%{crate}" crate. - -%files -n rust-%{name}+self_update_crate-devel -%ghost %{crate_instdir}/Cargo.toml - -%prep -%autosetup -n %{name}-%{version} -p1 -%cargo_prep_online - -%build -%cargo_license_summary_online -%{cargo_license_online} > LICENSE.dependencies - -%install -%cargo_install - -%files -%license LICENSE LICENSE.dependencies -%doc BREAKINGCHANGES.md README.md -%{_bindir}/%{name} - -%changelog -* Tue Jul 02 2024 Andrey Brusnik - 15.0.0-1 -- chore(topgrade): Bump to 15.0.0 - -* Tue Jun 18 2024 Andrey Brusnik - 14.0.1-1 -- feat: Added topgrade package diff --git a/anda/tools/ueberzugpp/anda.hcl b/anda/tools/ueberzugpp/anda.hcl new file mode 100644 index 0000000000..55c968338f --- /dev/null +++ b/anda/tools/ueberzugpp/anda.hcl @@ -0,0 +1,5 @@ +project pkg { + rpm { + spec = "ueberzugpp.spec" + } +} diff --git a/anda/tools/ueberzugpp/ueberzugpp.spec b/anda/tools/ueberzugpp/ueberzugpp.spec new file mode 100644 index 0000000000..fb9e852d99 --- /dev/null +++ b/anda/tools/ueberzugpp/ueberzugpp.spec @@ -0,0 +1,57 @@ +Name: ueberzugpp +Version: 2.9.8 +Release: 1%?dist +License: GPL-3.0 +Summary: Drop in replacement for ueberzug written in C++ +URL: https://github.com/jstkdng/%{name} +Source: %{url}/archive/v%{version}.tar.gz +Packager: metcya + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: pkgconfig(vips) +BuildRequires: pkgconfig(libsixel) +BuildRequires: pkgconfig(chafa) +BuildRequires: pkgconfig(openssl) +BuildRequires: pkgconfig(tbb) +BuildRequires: pkgconfig(nlohmann_json) +BuildRequires: cli11-devel +BuildRequires: pkgconfig(spdlog) +BuildRequires: pkgconfig(fmt) +BuildRequires: range-v3-devel +BuildRequires: pkgconfig(opencv) +BuildRequires: xcb-util-image-devel +BuildRequires: wayland-devel +BuildRequires: wayland-protocols-devel +BuildRequires: extra-cmake-modules + +%description +Überzug++ is a command line utility written in C++ which allows to draw images +on terminals by using X11/wayland child windows, sixels, kitty and iterm2. + +%prep +%autosetup + +%build +%cmake . -DENABLE_WAYLAND=ON \ + -DENABLE_XCB_ERROR=ON +%cmake_build + +%install +%cmake_install + +%files +%doc README.md +%doc CODE_OF_CONDUCT.md +%license LICENSE +%{_bindir}/ueberzug +%{_bindir}/ueberzugpp +%{_mandir}/man1/ueberzug.1* +%{_mandir}/man1/ueberzugpp.1* + +%check +%ctest + +%changelog +* Tue Nov 11 2025 metcya +- Package ueberzugpp diff --git a/anda/tools/ueberzugpp/update.rhai b/anda/tools/ueberzugpp/update.rhai new file mode 100644 index 0000000000..d84bab31dc --- /dev/null +++ b/anda/tools/ueberzugpp/update.rhai @@ -0,0 +1 @@ +rpm.version(gh("jstkdng/ueberzugpp")); diff --git a/anda/tools/yt-dlp-ejs/anda.hcl b/anda/tools/yt-dlp-ejs/anda.hcl new file mode 100644 index 0000000000..daa2763b52 --- /dev/null +++ b/anda/tools/yt-dlp-ejs/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "python-yt-dlp-ejs.spec" + } +} diff --git a/anda/tools/yt-dlp-ejs/python-yt-dlp-ejs.spec b/anda/tools/yt-dlp-ejs/python-yt-dlp-ejs.spec new file mode 100644 index 0000000000..645e9236bb --- /dev/null +++ b/anda/tools/yt-dlp-ejs/python-yt-dlp-ejs.spec @@ -0,0 +1,52 @@ +Name: python-yt-dlp-ejs +Version: 0.3.1 +Release: 2%?dist +Summary: External JavaScript for yt-dlp supporting many runtimes + +License: Unlicense AND MIT AND ISC +URL: https://github.com/yt-dlp/ejs +Source: %{pypi_source yt_dlp_ejs} +Packager: madonuko + +BuildArch: noarch +BuildRequires: python3-devel +BuildRequires: python3dist(pip) +BuildRequires: python3dist(hatch-vcs) +BuildRequires: (deno or bun or nodejs-npm) + + +%global _description %{expand: +%summary.} + +%description %_description + +%package -n python3-yt-dlp-ejs +Summary: %{summary} +Provides: yt-dlp-ejs = %evr +Requires: (deno or bun or nodejs-npm) + +%description -n python3-yt-dlp-ejs %_description + + +%prep +%autosetup -p1 -n yt_dlp_ejs-%{version} + + +#generate_buildrequires +#pyproject_buildrequires + + +%build +%pyproject_wheel + + +%install +%pyproject_install +%pyproject_save_files -l yt_dlp_ejs + + +%check +%pyproject_check_import + + +%files -n python3-yt-dlp-ejs -f %{pyproject_files} diff --git a/anda/tools/yt-dlp-ejs/update.rhai b/anda/tools/yt-dlp-ejs/update.rhai new file mode 100644 index 0000000000..b79a194753 --- /dev/null +++ b/anda/tools/yt-dlp-ejs/update.rhai @@ -0,0 +1 @@ +rpm.version(find("yt-dlp-ejs==([\\d.]+)", gh_rawfile("yt-dlp/yt-dlp", "master", "pyproject.toml"), 1)); diff --git a/anda/tools/yt-dlp/yt-dlp-git.spec b/anda/tools/yt-dlp/yt-dlp-git.spec index 09468186a3..946b3882f8 100644 --- a/anda/tools/yt-dlp/yt-dlp-git.spec +++ b/anda/tools/yt-dlp/yt-dlp-git.spec @@ -2,16 +2,15 @@ %global oldpkgname yt-dlp-nightly Name: yt-dlp-git -Version: 2025.08.30.224204 +Version: 2025.11.19.181744 Release: 1%?dist Summary: A command-line program to download videos from online video platforms License: Unlicense URL: https://github.com/yt-dlp/yt-dlp -# License of the specfile -Source: https://src.fedoraproject.org/rpms/yt-dlp/raw/rawhide/f/yt-dlp.spec.license - BuildArch: noarch +Packager: madonuko +Recommends: (deno or bun or nodejs-npm) BuildRequires: python3-devel BuildRequires: python3dist(hatchling) @@ -31,6 +30,7 @@ BuildRequires: anda-srpm-macros # ffmpeg-free is now available in Fedora. Recommends: /usr/bin/ffmpeg Recommends: /usr/bin/ffprobe +Recommends: yt-dlp-ejs Conflicts: yt-dlp diff --git a/andax/bump_extras.rhai b/andax/bump_extras.rhai index 184bbacec5..161e81166b 100644 --- a/andax/bump_extras.rhai +++ b/andax/bump_extras.rhai @@ -2,6 +2,10 @@ fn codeberg_commit(repo) { return get(`https://codeberg.org/api/v1/repos/${repo}/commits?stat=false&verification=false&files=false&limit=1`).json_arr()[0].sha; } +fn codeberg(repo) { + return get(`https://codeberg.org/api/v1/repos/${repo}/releases/latest`).json().tag_name; +} + fn as_bodhi_ver(branch) { if branch.starts_with("el") { branch.crop(2); @@ -10,7 +14,7 @@ fn as_bodhi_ver(branch) { } return `EPEL-${release}`; } else if branch == "frawhide" { - return "F43"; + return "F44"; } else if branch.starts_with("f") { branch.crop(1); return `F${branch}`;