From ca95bace9a40065cf8459efb6fac8c41ed728e41 Mon Sep 17 00:00:00 2001 From: Anders da Silva Rytter Hansen Date: Tue, 25 Aug 2026 01:26:42 +0200 Subject: [PATCH] SonicDE hard fork and upgrade to 6.7 --- .forgejo/workflows/build-rpms.yml | 99 ---- README.md | 92 +++- SonicDE-package-mapping.xlsx | Bin 9685 -> 0 bytes build-order.txt | 173 ++++++ ci/build-tier.sh | 85 +++ ci/generate-build-order.py | 120 ++++ ci/install-macros.sh | 21 + ci/parse-specs.sh | 49 ++ copr-build.sh | 104 ++-- docs/icons/bluesky.svg | 31 ++ docs/icons/discord.svg | 31 ++ docs/icons/liberadotchat.svg | 31 ++ docs/icons/mastodon.svg | 31 ++ docs/icons/matrix.svg | 31 ++ docs/icons/oftc.svg | 18 + docs/icons/telegram.svg | 31 ++ docs/icons/x.svg | 53 ++ docs/img/gh-social-preview.png | Bin 0 -> 320706 bytes docs/img/screenshot.jpg | Bin 0 -> 101504 bytes kde-to-sonic.csv | 16 - silver-sddm/silver-sddm.spec | 42 ++ .../sonic-accounts-integration.spec | 214 ++++++++ .../sonic-activities-stats.spec | 102 ++++ sonic-activities/sonic-activities.spec | 106 ++++ .../sonic-activity-manager-daemon.spec | 89 +++ .../sonic-audio-applet-pulse.spec | 100 ++++ .../sonic-bluetooth-runtime.spec | 119 ++++ ...d95349ec913f1042f5390dbd95a8341aea06.patch | 50 ++ sonic-breeze/sonic-breeze.spec | 202 +++++++ .../sonic-browser-integration.spec | 100 ++++ sonic-crypto-library/qca-qt6-pkgconfig.patch | 20 + .../sonic-crypto-library.spec | 515 ++++++++++++++++++ sonic-daemon/sonic-daemon.spec | 100 ++++ sonic-decoration/sonic-decoration.spec | 80 +++ .../sonic-desktop-interface.spec | 45 +- sonic-disks/sonic-disks.spec | 89 +++ .../drkonqi-installdbgsymbols.patch | 37 ++ sonic-dr-robotnik/sonic-dr-robotnik.spec | 141 +++++ .../sonic-drawing-tablet.spec | 108 ++++ sonic-ecco/sonic-ecco.spec | 190 +++++++ sonic-exiv2-library/sonic-exiv2-library.spec | 85 +++ .../sonic-file-search-ui.spec | 80 +++ sonic-firewall/sonic-firewall.spec | 136 +++++ .../sonic-frameworks-addons-downloader.spec | 134 +++++ .../sonic-frameworks-app-info.spec | 123 +++++ .../sonic-frameworks-archive.spec | 121 ++++ .../sonic-frameworks-auth.spec | 115 ++++ .../sonic-frameworks-autocomplete.spec | 108 ++++ .../sonic-frameworks-barcode.spec | 111 ++++ .../sonic-frameworks-bluetooth.spec | 111 ++++ .../sonic-frameworks-bookmarks.spec | 120 ++++ ...NPATH-to-prefix.sh-if-python-is-avai.patch | 55 ++ ...e-modules-5.39.0-poppler_overlinking.patch | 12 + .../sonic-frameworks-cmake-modules.spec | 109 ++++ .../sonic-frameworks-color-scheme.spec | 107 ++++ .../sonic-frameworks-core-addons.spec | 146 +++++ .../sonic-frameworks-crash-handler.spec | 106 ++++ .../sonic-frameworks-data-models.spec | 107 ++++ .../sonic-frameworks-data-views.spec | 107 ++++ .../sonic-frameworks-dbus.spec | 107 ++++ .../sonic-frameworks-device-integration.spec | 120 ++++ .../sonic-frameworks-doctools.spec | 119 ++++ .../sonic-frameworks-feeds.spec | 103 ++++ .../sonic-frameworks-file-metadata.spec | 126 +++++ .../baloo-5.67.0-baloofile_config.patch | 21 + .../sonic-frameworks-file-search.spec | 185 +++++++ .../sonic-frameworks-gui-addons.spec | 138 +++++ .../sonic-frameworks-holidays.spec | 108 ++++ .../sonic-frameworks-icon-themes.spec | 126 +++++ .../sonic-frameworks-idle-tracker.spec | 140 +++++ .../sonic-frameworks-image-formats.spec | 96 ++++ ...sonic-frameworks-internationalization.spec | 136 +++++ .../sonic-frameworks-io-extras.spec | 156 ++++++ .../sonic-frameworks-io-fuse.spec | 101 ++++ ...sfiltereng_private-a-VERSION-and-SOV.patch | 30 + sonic-frameworks-io/sonic-frameworks-io.spec | 280 ++++++++++ .../sonic-frameworks-keybind.spec | 17 +- .../sonic-frameworks-keyring-pam.spec | 77 +++ .../sonic-frameworks-keyring.spec | 157 ++++++ .../sonic-frameworks-modemmanager.spec | 102 ++++ .../sonic-frameworks-networkmanager.spec | 119 ++++ ...onic-frameworks-notification-settings.spec | 113 ++++ .../sonic-frameworks-notifications.spec | 131 +++++ .../sonic-frameworks-open-collab.spec | 102 ++++ .../sonic-frameworks-package.spec | 115 ++++ .../sonic-frameworks-progress-ui.spec | 132 +++++ .../sonic-frameworks-pseudo-terminal.spec | 111 ++++ .../sonic-frameworks-purpose.spec | 144 +++++ .../sonic-frameworks-qml-bridge.spec | 127 +++++ .../sonic-frameworks-qt-integration.spec | 134 +++++ .../sonic-frameworks-quick-charts.spec | 111 ++++ .../sonic-frameworks-quick-desktop-style.spec | 74 +++ .../sonic-frameworks-quick-silver-style.spec | 73 +++ .../sonic-frameworks-quick-ui-addons.spec | 126 +++++ .../sonic-frameworks-quick-ui.spec | 158 ++++++ .../sonic-frameworks-root-shell.spec | 117 ++++ .../sonic-frameworks-runner.spec | 118 ++++ .../sonic-frameworks-settings-ui.spec | 124 +++++ .../sonic-frameworks-settings-utils.spec | 134 +++++ .../sonic-frameworks-settings.spec | 124 +++++ .../sonic-frameworks-silver-icons.spec | 214 ++++++++ .../sonic-frameworks-spell-check.spec | 191 +++++++ .../sonnet6-default-list.patch | 37 ++ .../sonic-frameworks-sso.spec | 205 +++++++ .../sonic-frameworks-status-notification.spec | 126 +++++ .../sonic-frameworks-svg.spec | 112 ++++ .../sonic-frameworks-syntax-highlighting.spec | 119 ++++ .../sonic-frameworks-text-codec.spec | 106 ++++ .../sonic-frameworks-text-editor.spec | 141 +++++ .../sonic-frameworks-text-widgets.spec | 120 ++++ .../sonic-frameworks-ui-components.spec | 125 +++++ .../sonic-frameworks-unit-conversion.spec | 125 +++++ .../sonic-frameworks-user-feedback.spec | 159 ++++++ .../sonic-frameworks-via.spec | 60 ++ .../sonic-frameworks-widgets-addons.spec | 131 +++++ .../sonic-frameworks-windowsystem.spec | 21 +- .../sonic-frameworks-xml-gui.spec | 145 +++++ .../sonic-frameworks-zeroconf.spec | 104 ++++ .../sonic-gtk-theme-bridge.spec | 97 ++++ .../sonic-interface-libraries.spec | 15 +- .../sonic-keybind-daemon.spec | 15 +- .../sonic-launcher-menu-edit.spec | 81 +++ sonic-login-manager/sonic-login-manager.spec | 18 +- .../sonic-network-manager.spec | 365 +++++++++++++ sonic-night-light/sonic-night-light.spec | 125 +++++ sonic-oxygen-icons/sonic-oxygen-icons.spec | 47 ++ sonic-oxygen-sounds/sonic-oxygen-sounds.spec | 63 +++ sonic-oxygen/sonic-oxygen.spec | 205 +++++++ .../sonic-partition-manager.spec | 108 ++++ sonic-pipewire/sonic-pipewire.spec | 126 +++++ .../sonic-plasma5-support-library.spec | 135 +++++ sonic-polkit-agent/sonic-polkit-agent.spec | 90 +++ sonic-polkit/sonic-polkit.spec | 127 +++++ .../sonic-pulseaudio-library.spec | 93 ++++ .../sonic-qt-accounts-library.spec | 59 ++ .../sonic-qt-theme-bridge.spec | 150 +++++ .../sonic-quick-image-editor.spec | 82 +++ sonic-rdp-server/sonic-rdp-server.spec | 149 +++++ sonic-rpm-macros/LICENSE | 9 + sonic-rpm-macros/macros.kf6 | 120 ++++ sonic-rpm-macros/sonic-rpm-macros.spec | 63 +++ .../sonic-screen-library.spec | 15 +- sonic-screen/sonic-screen.spec | 15 +- sonic-screenies/sonic-screenies.spec | 156 ++++++ sonic-screenlocker/sonic-screenlocker.spec | 15 +- sonic-silver-gtk/sonic-silver-gtk.spec | 130 +++++ sonic-silver-theme/sonic-silver-theme.spec | 165 +++--- .../sonic-ssh-password-prompt.spec | 79 +++ .../sonic-sysguard-library.spec | 15 +- sonic-system-info/sonic-system-info.spec | 17 +- .../ksystemlog-21.12.2-fedora.patch | 83 +++ sonic-system-log/sonic-system-log.spec | 103 ++++ .../sonic-system-monitor.spec | 100 ++++ sonic-system-stats/sonic-system-stats.spec | 94 ++++ .../sonic-terminal-tools.spec | 128 +++++ .../konsole-history_location_default.patch | 26 + sonic-terminal/konsolerc | 6 + sonic-terminal/sonic-terminal.spec | 160 ++++++ sonic-thunderbolt/sonic-thunderbolt.spec | 84 +++ sonic-vault/sonic-vault.spec | 86 +++ .../sonic-welcome-center.spec | 97 ++++ sonic-win/sonic-win.spec | 53 +- .../sonic-workspace-addons.spec | 216 ++++++++ .../sonic-workspace-wallpapers.spec | 104 ++++ sonic-workspace/sonic-workspace.spec | 67 +-- sonic-write-daemon/sonic-write-daemon.spec | 64 +++ .../xdg-desktop-portal-sonicde.spec | 101 ++++ 167 files changed, 16631 insertions(+), 421 deletions(-) delete mode 100644 .forgejo/workflows/build-rpms.yml delete mode 100644 SonicDE-package-mapping.xlsx create mode 100644 build-order.txt create mode 100755 ci/build-tier.sh create mode 100755 ci/generate-build-order.py create mode 100755 ci/install-macros.sh create mode 100755 ci/parse-specs.sh create mode 100644 docs/icons/bluesky.svg create mode 100644 docs/icons/discord.svg create mode 100644 docs/icons/liberadotchat.svg create mode 100644 docs/icons/mastodon.svg create mode 100644 docs/icons/matrix.svg create mode 100644 docs/icons/oftc.svg create mode 100644 docs/icons/telegram.svg create mode 100644 docs/icons/x.svg create mode 100644 docs/img/gh-social-preview.png create mode 100644 docs/img/screenshot.jpg delete mode 100755 kde-to-sonic.csv create mode 100644 silver-sddm/silver-sddm.spec create mode 100644 sonic-accounts-integration/sonic-accounts-integration.spec create mode 100644 sonic-activities-stats/sonic-activities-stats.spec create mode 100644 sonic-activities/sonic-activities.spec create mode 100644 sonic-activity-manager-daemon/sonic-activity-manager-daemon.spec create mode 100644 sonic-audio-applet-pulse/sonic-audio-applet-pulse.spec create mode 100644 sonic-bluetooth-runtime/sonic-bluetooth-runtime.spec create mode 100644 sonic-breeze/a74ad95349ec913f1042f5390dbd95a8341aea06.patch create mode 100644 sonic-breeze/sonic-breeze.spec create mode 100644 sonic-browser-integration/sonic-browser-integration.spec create mode 100644 sonic-crypto-library/qca-qt6-pkgconfig.patch create mode 100644 sonic-crypto-library/sonic-crypto-library.spec create mode 100644 sonic-daemon/sonic-daemon.spec create mode 100644 sonic-decoration/sonic-decoration.spec create mode 100644 sonic-disks/sonic-disks.spec create mode 100644 sonic-dr-robotnik/drkonqi-installdbgsymbols.patch create mode 100644 sonic-dr-robotnik/sonic-dr-robotnik.spec create mode 100644 sonic-drawing-tablet/sonic-drawing-tablet.spec create mode 100644 sonic-ecco/sonic-ecco.spec create mode 100644 sonic-exiv2-library/sonic-exiv2-library.spec create mode 100644 sonic-file-search-ui/sonic-file-search-ui.spec create mode 100644 sonic-firewall/sonic-firewall.spec create mode 100644 sonic-frameworks-addons-downloader/sonic-frameworks-addons-downloader.spec create mode 100644 sonic-frameworks-app-info/sonic-frameworks-app-info.spec create mode 100644 sonic-frameworks-archive/sonic-frameworks-archive.spec create mode 100644 sonic-frameworks-auth/sonic-frameworks-auth.spec create mode 100644 sonic-frameworks-autocomplete/sonic-frameworks-autocomplete.spec create mode 100644 sonic-frameworks-barcode/sonic-frameworks-barcode.spec create mode 100644 sonic-frameworks-bluetooth/sonic-frameworks-bluetooth.spec create mode 100644 sonic-frameworks-bookmarks/sonic-frameworks-bookmarks.spec create mode 100644 sonic-frameworks-cmake-modules/0001-Revert-Add-PYTHONPATH-to-prefix.sh-if-python-is-avai.patch create mode 100644 sonic-frameworks-cmake-modules/extra-cmake-modules-5.39.0-poppler_overlinking.patch create mode 100644 sonic-frameworks-cmake-modules/sonic-frameworks-cmake-modules.spec create mode 100644 sonic-frameworks-color-scheme/sonic-frameworks-color-scheme.spec create mode 100644 sonic-frameworks-core-addons/sonic-frameworks-core-addons.spec create mode 100644 sonic-frameworks-crash-handler/sonic-frameworks-crash-handler.spec create mode 100644 sonic-frameworks-data-models/sonic-frameworks-data-models.spec create mode 100644 sonic-frameworks-data-views/sonic-frameworks-data-views.spec create mode 100644 sonic-frameworks-dbus/sonic-frameworks-dbus.spec create mode 100644 sonic-frameworks-device-integration/sonic-frameworks-device-integration.spec create mode 100644 sonic-frameworks-doctools/sonic-frameworks-doctools.spec create mode 100644 sonic-frameworks-feeds/sonic-frameworks-feeds.spec create mode 100644 sonic-frameworks-file-metadata/sonic-frameworks-file-metadata.spec create mode 100644 sonic-frameworks-file-search/baloo-5.67.0-baloofile_config.patch create mode 100644 sonic-frameworks-file-search/sonic-frameworks-file-search.spec create mode 100644 sonic-frameworks-gui-addons/sonic-frameworks-gui-addons.spec create mode 100644 sonic-frameworks-holidays/sonic-frameworks-holidays.spec create mode 100644 sonic-frameworks-icon-themes/sonic-frameworks-icon-themes.spec create mode 100644 sonic-frameworks-idle-tracker/sonic-frameworks-idle-tracker.spec create mode 100644 sonic-frameworks-image-formats/sonic-frameworks-image-formats.spec create mode 100644 sonic-frameworks-internationalization/sonic-frameworks-internationalization.spec create mode 100644 sonic-frameworks-io-extras/sonic-frameworks-io-extras.spec create mode 100644 sonic-frameworks-io-fuse/sonic-frameworks-io-fuse.spec create mode 100644 sonic-frameworks-io/0001-Give-the-kuriikwsfiltereng_private-a-VERSION-and-SOV.patch create mode 100644 sonic-frameworks-io/sonic-frameworks-io.spec create mode 100644 sonic-frameworks-keyring-pam/sonic-frameworks-keyring-pam.spec create mode 100644 sonic-frameworks-keyring/sonic-frameworks-keyring.spec create mode 100644 sonic-frameworks-modemmanager/sonic-frameworks-modemmanager.spec create mode 100644 sonic-frameworks-networkmanager/sonic-frameworks-networkmanager.spec create mode 100644 sonic-frameworks-notification-settings/sonic-frameworks-notification-settings.spec create mode 100644 sonic-frameworks-notifications/sonic-frameworks-notifications.spec create mode 100644 sonic-frameworks-open-collab/sonic-frameworks-open-collab.spec create mode 100644 sonic-frameworks-package/sonic-frameworks-package.spec create mode 100644 sonic-frameworks-progress-ui/sonic-frameworks-progress-ui.spec create mode 100644 sonic-frameworks-pseudo-terminal/sonic-frameworks-pseudo-terminal.spec create mode 100644 sonic-frameworks-purpose/sonic-frameworks-purpose.spec create mode 100644 sonic-frameworks-qml-bridge/sonic-frameworks-qml-bridge.spec create mode 100644 sonic-frameworks-qt-integration/sonic-frameworks-qt-integration.spec create mode 100644 sonic-frameworks-quick-charts/sonic-frameworks-quick-charts.spec create mode 100644 sonic-frameworks-quick-desktop-style/sonic-frameworks-quick-desktop-style.spec create mode 100644 sonic-frameworks-quick-silver-style/sonic-frameworks-quick-silver-style.spec create mode 100644 sonic-frameworks-quick-ui-addons/sonic-frameworks-quick-ui-addons.spec create mode 100644 sonic-frameworks-quick-ui/sonic-frameworks-quick-ui.spec create mode 100644 sonic-frameworks-root-shell/sonic-frameworks-root-shell.spec create mode 100644 sonic-frameworks-runner/sonic-frameworks-runner.spec create mode 100644 sonic-frameworks-settings-ui/sonic-frameworks-settings-ui.spec create mode 100644 sonic-frameworks-settings-utils/sonic-frameworks-settings-utils.spec create mode 100644 sonic-frameworks-settings/sonic-frameworks-settings.spec create mode 100644 sonic-frameworks-silver-icons/sonic-frameworks-silver-icons.spec create mode 100644 sonic-frameworks-spell-check/sonic-frameworks-spell-check.spec create mode 100644 sonic-frameworks-spell-check/sonnet6-default-list.patch create mode 100644 sonic-frameworks-sso/sonic-frameworks-sso.spec create mode 100644 sonic-frameworks-status-notification/sonic-frameworks-status-notification.spec create mode 100644 sonic-frameworks-svg/sonic-frameworks-svg.spec create mode 100644 sonic-frameworks-syntax-highlighting/sonic-frameworks-syntax-highlighting.spec create mode 100644 sonic-frameworks-text-codec/sonic-frameworks-text-codec.spec create mode 100644 sonic-frameworks-text-editor/sonic-frameworks-text-editor.spec create mode 100644 sonic-frameworks-text-widgets/sonic-frameworks-text-widgets.spec create mode 100644 sonic-frameworks-ui-components/sonic-frameworks-ui-components.spec create mode 100644 sonic-frameworks-unit-conversion/sonic-frameworks-unit-conversion.spec create mode 100644 sonic-frameworks-user-feedback/sonic-frameworks-user-feedback.spec create mode 100644 sonic-frameworks-via/sonic-frameworks-via.spec create mode 100644 sonic-frameworks-widgets-addons/sonic-frameworks-widgets-addons.spec create mode 100644 sonic-frameworks-xml-gui/sonic-frameworks-xml-gui.spec create mode 100644 sonic-frameworks-zeroconf/sonic-frameworks-zeroconf.spec create mode 100644 sonic-gtk-theme-bridge/sonic-gtk-theme-bridge.spec create mode 100644 sonic-launcher-menu-edit/sonic-launcher-menu-edit.spec create mode 100644 sonic-network-manager/sonic-network-manager.spec create mode 100644 sonic-night-light/sonic-night-light.spec create mode 100644 sonic-oxygen-icons/sonic-oxygen-icons.spec create mode 100644 sonic-oxygen-sounds/sonic-oxygen-sounds.spec create mode 100644 sonic-oxygen/sonic-oxygen.spec create mode 100644 sonic-partition-manager/sonic-partition-manager.spec create mode 100644 sonic-pipewire/sonic-pipewire.spec create mode 100644 sonic-plasma5-support-library/sonic-plasma5-support-library.spec create mode 100644 sonic-polkit-agent/sonic-polkit-agent.spec create mode 100644 sonic-polkit/sonic-polkit.spec create mode 100644 sonic-pulseaudio-library/sonic-pulseaudio-library.spec create mode 100644 sonic-qt-accounts-library/sonic-qt-accounts-library.spec create mode 100644 sonic-qt-theme-bridge/sonic-qt-theme-bridge.spec create mode 100644 sonic-quick-image-editor/sonic-quick-image-editor.spec create mode 100644 sonic-rdp-server/sonic-rdp-server.spec create mode 100644 sonic-rpm-macros/LICENSE create mode 100644 sonic-rpm-macros/macros.kf6 create mode 100644 sonic-rpm-macros/sonic-rpm-macros.spec create mode 100644 sonic-screenies/sonic-screenies.spec create mode 100644 sonic-silver-gtk/sonic-silver-gtk.spec create mode 100644 sonic-ssh-password-prompt/sonic-ssh-password-prompt.spec create mode 100644 sonic-system-log/ksystemlog-21.12.2-fedora.patch create mode 100644 sonic-system-log/sonic-system-log.spec create mode 100644 sonic-system-monitor/sonic-system-monitor.spec create mode 100644 sonic-system-stats/sonic-system-stats.spec create mode 100644 sonic-terminal-tools/sonic-terminal-tools.spec create mode 100644 sonic-terminal/konsole-history_location_default.patch create mode 100644 sonic-terminal/konsolerc create mode 100644 sonic-terminal/sonic-terminal.spec create mode 100644 sonic-thunderbolt/sonic-thunderbolt.spec create mode 100644 sonic-vault/sonic-vault.spec create mode 100644 sonic-welcome-center/sonic-welcome-center.spec create mode 100644 sonic-workspace-addons/sonic-workspace-addons.spec create mode 100644 sonic-workspace-wallpapers/sonic-workspace-wallpapers.spec create mode 100644 sonic-write-daemon/sonic-write-daemon.spec create mode 100644 xdg-desktop-portal-sonicde/xdg-desktop-portal-sonicde.spec diff --git a/.forgejo/workflows/build-rpms.yml b/.forgejo/workflows/build-rpms.yml deleted file mode 100644 index d95b93d..0000000 --- a/.forgejo/workflows/build-rpms.yml +++ /dev/null @@ -1,99 +0,0 @@ -name: Build RPMs - -on: - push: - paths: - - "**.spec" - workflow_dispatch: - -jobs: - build: - runs-on: almalinux-10 - strategy: - fail-fast: false - matrix: - spec: - - sonic-interface-libraries.spec - - sonic-win.spec - - sonic-workspace.spec - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install build tools - run: | - dnf install -y \ - rpm-build \ - rpmdevtools \ - mock \ - curl - - - name: Add runner user to mock group - run: usermod -aG mock $(whoami) || true - - - name: Setup RPM build tree - run: rpmdev-setuptree - - - name: Download sources for ${{ matrix.spec }} - run: | - spectool -g -C ~/rpmbuild/SOURCES/ ${{ matrix.spec }} - - - name: Build SRPM from ${{ matrix.spec }} - run: | - rpmbuild -bs \ - --define "_topdir ${HOME}/rpmbuild" \ - --define "_disable_source_fetch 0" \ - ${{ matrix.spec }} - PKGNAME=$(rpmspec -q --srpm --queryformat "%{NAME}-%{VERSION}-%{RELEASE}.src.rpm" ${{ matrix.spec }}) - echo "SRPM_PATH=${HOME}/rpmbuild/SRPMS/${PKGNAME}" >> "$GITHUB_ENV" - - - name: Build RPM with mock - run: | - cat > /etc/mock/custom.cfg <<'MOCKEOF' - include('/etc/mock/alma+epel-10-x86_64.cfg') - config_opts['root'] = 'custom' - config_opts['yum.conf'] += """ - [sonicde-rpm] - name=SonicDE RPM - baseurl=https://pc-rytteren.dk/forge/api/packages/anders/rpm - enabled=1 - gpgcheck=0 - - [xlibre-xserver] - name=Copr xlibre-xserver - baseurl=https://download.copr.fedorainfracloud.org/results/@xlibre/xlibre-xserver/rhel+epel-10-$basearch/ - type=rpm-md - skip_if_unavailable=True - gpgcheck=1 - gpgkey=https://download.copr.fedorainfracloud.org/results/@xlibre/xlibre-xserver/pubkey.gpg - repo_gpgcheck=0 - enabled=1 - """ - MOCKEOF - - mock --root custom --scrub=all || true - mock --root custom --init - mock --root custom --chroot 'groupadd -g 135 mock 2>/dev/null || true; useradd -u 135 -g 135 -d /builddir -s /bin/bash mockbuild 2>/dev/null || true' - mock --root custom --resultdir "${HOME}/mock-results" --no-clean --rebuild "${{ env.SRPM_PATH }}" - - - name: Upload RPMs to Forgejo Package Registry - run: | - FORGEJO_URL="${{ github.server_url }}" - OWNER="${{ github.repository_owner }}" - TOKEN="${{ secrets.PACKAGE_TOKEN }}" - - find "${HOME}/mock-results" -name "*.rpm" ! -name "*.src.rpm" | while read rpm; do - FILENAME=$(basename "$rpm") - echo "Uploading $FILENAME ..." - curl --fail-with-body \ - --user "${OWNER}:${TOKEN}" \ - --upload-file "$rpm" \ - "${FORGEJO_URL}/api/packages/${OWNER}/rpm/upload" - done - - - name: Clean up build artifacts - if: always() - run: | - rm -rf "${HOME}/mock-results" - rm -rf "${HOME}/rpmbuild/SRPMS" diff --git a/README.md b/README.md index ae6d511..91e1c9d 100644 --- a/README.md +++ b/README.md @@ -1,42 +1,98 @@ -# SonicDE for Enterprise Linux 10 +![SonicDE on Enterprise Linux](./docs/img/screenshot.jpg) -This repository contains both source code and instructions on how to install the SonicDE third-party packages on Enterprise Linux 10 distributions like [AlmaLinux](https://almalinux.org/), [Red Hat Enterprise Linux (RHEL)](https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux), [Oracle Linux](https://www.oracle.com/linux), and [Rocky Linux](https://rockylinux.org). +# SonicDE for Enterprise Linux 10 and Fedora -## Installation Instructions +This third-party repository provides [SonicDE](https://sonicde.org) source and binary packages for [Enterprise Linux](https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux)-based distributions and for [Fedora](https://fedoraproject.org/). SonicDE, or the Sonic Desktop Environment, aims to preserve and improve the X11-specific aspects of KDE. You can learn more about SonicDE at [sonicde.org](https://sonicde.org/). -Step 1: Since EL10 doesn't have any X11 server by default or in the official repos, you need to install one. We recommend using the XLibre X11 server. -Follow the installation instructions on the [XLibre for Fedora and EL Github page](https://github.com/xlibre-fedora-el/rpmspecs) +The packages of this repository are known to work with [AlmaLinux](https://almalinux.org/), [Red Hat Enterprise Linux (RHEL)](https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux) and Fedora. They also should on [Oracle Linux](https://www.oracle.com/linux) and [Rocky Linux](https://rockylinux.org). -Step 2: Enable the repository +Since SonicDE completed its hard fork of KDE Frameworks and Plasma, this repository packages the complete SonicDE stack itself: the frameworks (currently 6.29.0.x), the workspace (currently 6.7.4.x) and the applications (26.04.x). The very same versions are built for EL10 and for Fedora, so neither distribution's KDE packages decide which SonicDE version you get. The SonicDE packages carry `Provides`/`Conflicts` for the corresponding `kf6-*` and `plasma-*` packages, so they replace their EPEL/Fedora counterparts instead of coexisting with them. + +## Installing SonicDE Manually + +### Choosing an X11 Display Server + +EL10 has no X11 server by default or in the official repos, and Fedora no longer ships one either, so you need to install one. We recommend using the XLibre X11 server. Follow the installation instructions on the [XLibre for Fedora and EL GitHub page](https://github.com/xlibre-fedora-el/rpmspecs). + +### Enabling the SonicDE Copr Repository > [!warning] -> Beware that since SonicDE has started to remove Wayland code, the Wayland session may not work after installing it even though it is listed as an option in the display manager. At this moment, we don't yet have instructions on how to go back to KDE Plasma, so proceed at your own risk. +> Beware that SonicDE has removed the Wayland parts, so the Wayland session may not work after installing it even though it is listed as an option in the display manager. You may not be able to start KDE Wayland anymore. Proceed at your own risk. + +> [!note] +> On EL10 the EPEL repository is still needed for build and runtime dependencies that SonicDE does not fork, such as `plasma-systemsettings`. Enable it as described in [Getting started with EPEL](https://docs.fedoraproject.org/en-US/epel/getting-started/). Installing the whole "KDE Plasma Workspaces" group first is no longer necessary. Add the SonicDE repository to your system: ```shell +# Enterprise Linux 10 sudo dnf config-manager --add-repo https://copr.fedorainfracloud.org/coprs/g/SonicDE/SonicDE-EL10/repo/rhel+epel-10/group_SonicDE-SonicDE-EL10-rhel+epel-10.repo + +# Fedora +sudo dnf copr enable @SonicDE/SonicDE-EL10 ``` -Step 3: Install the SonicDE packages and other needed X11 packages. +### Installing SonicDE When XLibre has been installed, you can install the SonicDE packages and other needed X11 packages by running this command: ```shell -sudo dnf install --allowerasing xorg-x11-xinit xkbcomp xinput xrandr sonic-workspace sonic-workspace-libs sonic-workspace-common sonic-workspace-x11 sonic-win sonic-desktop-interface sonic-interface-libraries sonic-keybind-daemon sonic-frameworks-windowsystem sonic-system-info sonic-screen sonic-screen-library sonic-sysguard-library +sudo dnf install --allowerasing xorg-x11-xinit xkbcomp xinput xrandr \ + sonic-workspace sonic-workspace-libs sonic-workspace-common \ + sonic-workspace-x11 sonic-win sonic-desktop-interface \ + sonic-interface-libraries sonic-keybind-daemon \ + sonic-frameworks-windowsystem sonic-system-info sonic-screen \ + sonic-screen-library sonic-sysguard-library ``` -Step 4: Install Sonic Login Manager - -This step may be optional, but it is recommended. It may or may not work with SDDM Wayland, but I know that it works with Sonic Login Manager. - -Install it with the following command: +As the [GNOME Display Manager (GDM)](https://en.wikipedia.org/wiki/GNOME_Display_Manager) has no X11 support compiled in, you need to switch to an X11-capable display manager. SonicDE ships its own, `sonic-login-manager`: ```shell -sudo dnf remove sddm && \ - sudo dnf install --allowerasing sonic-login-manager +sudo dnf install sonic-login-manager +sudo systemctl enable --force plasmalogin.service ``` -Step 5: Reboot your system +Alternatively you can keep [SDDM](https://en.wikipedia.org/wiki/Simple_Desktop_Display_Manager), optionally with the Sonic Silver theme from `silver-sddm`: + +```shell +sudo dnf install sddm silver-sddm +sudo systemctl enable --force sddm.service +``` + +### Rebooting Your System + +Now reboot your system. At the login screen choose "Plasma (X11)" as the session type. Log in with your credentials, start the program System Settings and verify that you’re running SonicDE on the “About this System” page. You do? Congratulations! + +If your system only shows a blinking cursor after the reboot, switch to a [text console](https://wiki.archlinux.org/title/Linux_console) via, e.g., Ctrl+Alt+F3, log in as your regular user and enter the following commands: + +```shell +sudo dnf reinstall sddm +sudo systemctl restart sddm +``` + +## Building the Packages + +Every package lives in its own directory named after the package and contains a single spec file. Sources are the release tags of the [SonicDE repositories](https://github.com/Sonic-DE/) — never `download.kde.org` and never the `v`-prefixed tags inherited from KDE. + +`build-order.txt` lists the packages in dependency tiers computed from the `BuildRequires` of every spec by `ci/generate-build-order.py`. Packages within a tier are independent; each tier needs the previous ones. + +```shell +# Parse every spec and check it against build-order.txt +ci/parse-specs.sh + +# Build one tier in mock, for EL10 and for Fedora +ci/build-tier.sh tier1 alma+epel-10-x86_64 +ci/build-tier.sh tier1 fedora-43-x86_64 + +# Submit builds to Copr, tier by tier +./copr-build.sh all +``` + +`sonic-rpm-macros` provides the `%_kf6_*` paths and the `%cmake_kf6` macro family. It replaces `kf6-rpm-macros`, so it must be built and installed first — it is in the first tier for that reason. Directory ownership still comes from the distribution's `kf6-filesystem`, which contains no KDE code. + +## Getting in Contact + +Please report any enhancement requests or issues with this repository at [Issues · sonicde-fedora-el/rpmspecs](https://github.com/sonicde-fedora-el/rpmspecs/issues). In case you need help, want to report success or talk about other aspects, please also check the official SonicDE channels. + + [Bluesky](https://bsky.app/profile/sonicdesktop.bsky.social)   [Discord](https://discord.gg/cNZMQ62u5S)    [Mastodon](https://mastodon.social/@sonicdesktop)    [Matrix](https://matrix.to/#/#sonicdesktop:matrix.org)    [OFTC IRC](https://webchat.oftc.net/?channels=sonicde%2Csonicde-devel%2Csonicde-dist&uio=MT11bmRlZmluZWQb1)    [Telegram](https://t.me/sonic_de)    [X (Twitter)](https://x.com/SonicDesktop) -Now reboot your system. When it starts the display manager, then in the left corner make sure to choose Plasma (X11) as the session type. \ No newline at end of file diff --git a/SonicDE-package-mapping.xlsx b/SonicDE-package-mapping.xlsx deleted file mode 100644 index aede892955aabd6332e4aa4dc90eb259956e8bb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9685 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 b6Zmb(p{arl?-pH6`7r? +# +# Environment: +# FORGEJO_URL, FORGEJO_OWNER, FORGEJO_TOKEN upload target (upload is skipped +# when FORGEJO_TOKEN is empty) +set -euo pipefail + +TIER=${1:?tier name, e.g. tier1} +MOCK_CONFIG=${2:?mock config, e.g. alma+epel-10-x86_64} + +REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +ORDER_FILE="$REPO_DIR/build-order.txt" +RESULT_DIR="${RESULT_DIR:-$HOME/mock-results}" + +packages() { + sed -n "/^\[$TIER\]$/,/^\[/p" "$ORDER_FILE" | + grep -v '^\[' | grep -v '^#' | grep -v '^$' +} + +write_mock_config() { + cat > /etc/mock/sonicde.cfg < package dir name +brs = defaultdict(set) + + +def parse(spec): + pkg = os.path.basename(spec)[:-5] + out = subprocess.run(["rpmspec", "-P", spec], capture_output=True, text=True).stdout + if not out: + out = open(spec, errors="replace").read() + names = {pkg} + in_files = False + for line in out.splitlines(): + s = line.strip() + m = re.match(r"%package\s+(?:-n\s+(\S+)|(\S+))", s) + if m: + names.add(m.group(1) or f"{pkg}-{m.group(2)}") + continue + if s.startswith("%files"): + in_files = True + elif s.startswith("%") and re.match(r"%(prep|build|install|conf|check|changelog|description|post|pre)", s): + in_files = s.startswith("%files") + m = re.match(r"(Provides|BuildRequires)\s*:\s*(.+)", s) + if m: + for dep in re.split(r"\s+(?=[A-Za-z_%(/])", m.group(2).strip()): + cap = dep.split()[0].replace("%{?_isa}", "").strip() + if not cap or cap.startswith(("%", "(")): + continue + if m.group(1) == "Provides": + names.add(cap) + else: + brs[pkg].add(cap) + if in_files: + for cm in re.findall(r"/cmake/([A-Za-z0-9_.+-]+)/?", s): + names.add(f"cmake({cm})") + for pc in re.findall(r"/([A-Za-z0-9_.+-]+)\.pc\b", s): + names.add(f"pkgconfig({pc})") + for n in names: + provides.setdefault(n, pkg) + return pkg + + +pkgs = [parse(s) for s in specs] + +edges = defaultdict(set) +for pkg in pkgs: + for cap in brs[pkg]: + owner = provides.get(cap) + if owner and owner != pkg: + edges[pkg].add(owner) + +# longest-path tier assignment, ignoring back edges of cycles +tier = {} +state = {} + + +def depth(pkg, stack=()): + if pkg in tier: + return tier[pkg] + if pkg in stack: + return 0 + d = 0 + for dep in edges[pkg]: + d = max(d, depth(dep, stack + (pkg,)) + 1) + tier[pkg] = d + return d + + +sys.setrecursionlimit(10000) +for pkg in pkgs: + depth(pkg) + +cycles = [] +for pkg in pkgs: + for dep in edges[pkg]: + if tier[dep] >= tier[pkg]: + cycles.append((pkg, dep)) + +groups = defaultdict(list) +for pkg in pkgs: + groups[tier[pkg]].append(pkg) + +lines = [ + "# Build order for the SonicDE packages, derived from the BuildRequires of", + "# every spec in this repository (see ci/generate-build-order.py).", + "#", + "# Packages inside one tier are independent and can be built in parallel;", + "# the tiers themselves must be built in order.", + "", +] +for i, t in enumerate(sorted(groups), start=1): + lines.append(f"[tier{i}]") + lines += sorted(groups[t]) + lines.append("") + +open(os.path.join(REPO, "build-order.txt"), "w").write("\n".join(lines).rstrip() + "\n") +print("tiers:", len(groups), "packages:", len(pkgs)) +if cycles: + print("dependency cycles (built with the earlier tier's package from the repo):") + for a, b in sorted(set(cycles)): + print(f" {a} <- {b}") diff --git a/ci/install-macros.sh b/ci/install-macros.sh new file mode 100755 index 0000000..9d771c7 --- /dev/null +++ b/ci/install-macros.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +# Installer for the SonicDE RPM macros without building the package. Used by +# CI so specs referring to macros like %majmin_ver_kf6 parse the same way they +# do on a system with sonic-rpm-macros installed. +set -euo pipefail + +cd "$(dirname "$0")/.." + +spec=sonic-rpm-macros/sonic-rpm-macros.spec +frameworks=$(rpmspec -q --srpm --queryformat '%{version}\n' "$spec") +plasma=$(sed -n 's/^%global sonicde_plasma_version \(.*\)$/\1/p' "$spec") +target=$(rpm --eval '%{_rpmconfigdir}')/macros.d/macros.kf6 + +install -Dpm 644 sonic-rpm-macros/macros.kf6 "$target" +sed -i \ + -e "s|@@kf6_VERSION@@|$frameworks|g" \ + -e "s|@@sonicde_frameworks_VERSION@@|$frameworks|g" \ + -e "s|@@sonicde_plasma_VERSION@@|$plasma|g" \ + "$target" + +echo "installed $target (frameworks $frameworks, plasma $plasma)" diff --git a/ci/parse-specs.sh b/ci/parse-specs.sh new file mode 100755 index 0000000..bf0f2bb --- /dev/null +++ b/ci/parse-specs.sh @@ -0,0 +1,49 @@ +#!/bin/bash +# Parse every spec in the repository and check that all packages listed in +# build-order.txt have a spec (and vice versa). +set -uo pipefail + +REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +cd "$REPO_DIR" + +fail=0 + +for spec in */*.spec; do + dir=${spec%%/*} + base=$(basename "$spec" .spec) + if [ "$dir" != "$base" ]; then + echo "FEJL: $spec ligger ikke i mappen $base" + fail=1 + continue + fi + if ! out=$(rpmspec -q --srpm --queryformat '%{name} %{version}-%{release}\n' "$spec" 2>&1); then + echo "FEJL: kan ikke parse $spec" + echo "$out" + fail=1 + continue + fi + echo "$out" + if warn=$(rpmspec -P "$spec" 2>&1 >/dev/null) && [ -n "$warn" ]; then + echo "ADVARSEL i $spec:" + echo "$warn" + fi +done + +ordered=$(grep -v '^\[' build-order.txt | grep -v '^#' | grep -v '^$' | sort) +present=$(for spec in */*.spec; do basename "$spec" .spec; done | sort) + +missing=$(comm -13 <(echo "$ordered") <(echo "$present")) +extra=$(comm -23 <(echo "$ordered") <(echo "$present")) + +if [ -n "$missing" ]; then + echo "FEJL: pakker uden plads i build-order.txt:" + echo "$missing" + fail=1 +fi +if [ -n "$extra" ]; then + echo "FEJL: build-order.txt nævner pakker uden spec:" + echo "$extra" + fail=1 +fi + +exit $fail diff --git a/copr-build.sh b/copr-build.sh index 53f3f0f..b725303 100755 --- a/copr-build.sh +++ b/copr-build.sh @@ -1,40 +1,24 @@ #!/bin/bash set -e -COPR="@SonicDE/SonicDE-EL10" -GIT_URL="https://pc-rytteren.dk/forge/anders/SonicDE-rpmspecs.git" -BRANCH="master" -METHOD="rpkg" +COPR="${COPR:-@SonicDE/SonicDE-EL10}" +GIT_URL="${GIT_URL:-https://pc-rytteren.dk/forge/anders/SonicDE-rpmspecs.git}" +BRANCH="${BRANCH:-master}" +METHOD="${METHOD:-rpkg}" -# Build order tiers (sequential within tier for dependency safety) -TIER1=( - sonic-silver-theme - sonic-frameworks-keybind - sonic-frameworks-windowsystem - sonic-keybind-daemon - sonic-sysguard-library - sonic-screen-library - sonic-interface-libraries - sonic-system-info - sonic-login-manager -) +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +ORDER_FILE="$SCRIPT_DIR/build-order.txt" -TIER2=( - sonic-screen - sonic-screenlocker -) +# All tier names present in build-order.txt, in order. +tier_names() { + sed -n 's/^\[\(tier[0-9]\+\)\]$/\1/p' "$ORDER_FILE" +} -TIER3=( - sonic-win -) - -TIER4=( - sonic-workspace -) - -TIER5=( - sonic-desktop-interface -) +# Packages of a single tier. +tier_packages() { + sed -n "/^\[$1\]$/,/^\[/p" "$ORDER_FILE" | + grep -v '^\[' | grep -v '^#' | grep -v '^$' +} # Submit SCM build to Copr (blocks until completion by default) submit_scm() { @@ -50,51 +34,48 @@ submit_scm() { # Submit tier in parallel submit_tier() { - local -n tier=$1 - local tier_name=$2 + local tier=$1 local pids=() echo "" echo "========================================" - echo " $tier_name" + echo " $tier" echo "========================================" - for pkg in "${tier[@]}"; do + for pkg in $(tier_packages "$tier"); do submit_scm "$pkg" & pids+=($!) done - # Wait for all builds in this tier for pid in "${pids[@]}"; do - wait $pid || { echo "FEJL: Bygning fejlede i $tier_name"; exit 1; } + wait $pid || { echo "FEJL: Bygning fejlede i $tier"; exit 1; } done - echo " $tier_name færdig" + echo " $tier færdig" } usage() { - echo "Brug: $0 [tier1|tier2|tier3|tier4|tier5|all ...]" - echo " tier1 - Byg Tier 1 pakker (uden afhængigheder)" - echo " tier2 - Byg Tier 2 pakker" - echo " tier3 - Byg Tier 3 pakker" - echo " tier4 - Byg Tier 4 pakker" - echo " tier5 - Byg Tier 5 pakker" - echo " all - Byg alle tiers (default hvis intet angivet)" + echo "Brug: $0 [tierN ...|all]" + echo " tierN - Byg pakkerne i den angivne tier fra build-order.txt" + echo " all - Byg alle tiers i rækkefølge (default hvis intet angivet)" echo "" - echo "Eksempler:" - echo " $0 tier2 # Kør kun Tier 2" - echo " $0 tier1 tier2 # Kør Tier 1 og 2" + echo "Tiers i $ORDER_FILE:" + for t in $(tier_names); do + echo " $t ($(tier_packages "$t" | wc -l) pakker)" + done + echo "" + echo "Miljøvariabler: COPR, GIT_URL, BRANCH, METHOD" exit 1 } -# Determine which tiers to run if [ $# -eq 0 ]; then set -- all fi -# Validate args for arg; do case "$arg" in - tier1|tier2|tier3|tier4|tier5|all) ;; + all) ;; + tier[0-9]*) + tier_names | grep -qx "$arg" || { echo "Ukendt tier: $arg"; usage; } ;; *) echo "Ukendt argument: $arg"; usage ;; esac done @@ -106,20 +87,13 @@ echo "Branch: $BRANCH" echo "" for arg; do - case "$arg" in - tier1) submit_tier TIER1 "Tier 1" ;; - tier2) submit_tier TIER2 "Tier 2" ;; - tier3) submit_tier TIER3 "Tier 3" ;; - tier4) submit_tier TIER4 "Tier 4" ;; - tier5) submit_tier TIER5 "Tier 5" ;; - all) - submit_tier TIER1 "Tier 1" - submit_tier TIER2 "Tier 2" - submit_tier TIER3 "Tier 3" - submit_tier TIER4 "Tier 4" - submit_tier TIER5 "Tier 5" - ;; - esac + if [ "$arg" = all ]; then + for t in $(tier_names); do + submit_tier "$t" + done + else + submit_tier "$arg" + fi done echo "" diff --git a/docs/icons/bluesky.svg b/docs/icons/bluesky.svg new file mode 100644 index 0000000..6e513aa --- /dev/null +++ b/docs/icons/bluesky.svg @@ -0,0 +1,31 @@ + + + + Bluesky + + + + + Bluesky + + + + diff --git a/docs/icons/discord.svg b/docs/icons/discord.svg new file mode 100644 index 0000000..69f34a6 --- /dev/null +++ b/docs/icons/discord.svg @@ -0,0 +1,31 @@ + + + + Discord + + + + + Discord + + + + diff --git a/docs/icons/liberadotchat.svg b/docs/icons/liberadotchat.svg new file mode 100644 index 0000000..caeb62f --- /dev/null +++ b/docs/icons/liberadotchat.svg @@ -0,0 +1,31 @@ + + + + Libera.Chat + + + + + Libera.Chat + + + + diff --git a/docs/icons/mastodon.svg b/docs/icons/mastodon.svg new file mode 100644 index 0000000..ba55944 --- /dev/null +++ b/docs/icons/mastodon.svg @@ -0,0 +1,31 @@ + + + + Mastodon + + + + + Mastodon + + + + diff --git a/docs/icons/matrix.svg b/docs/icons/matrix.svg new file mode 100644 index 0000000..05dd996 --- /dev/null +++ b/docs/icons/matrix.svg @@ -0,0 +1,31 @@ + + + + Matrix + + + + + Matrix + + + + diff --git a/docs/icons/oftc.svg b/docs/icons/oftc.svg new file mode 100644 index 0000000..4480a5a --- /dev/null +++ b/docs/icons/oftc.svg @@ -0,0 +1,18 @@ + + + + diff --git a/docs/icons/telegram.svg b/docs/icons/telegram.svg new file mode 100644 index 0000000..1b983ef --- /dev/null +++ b/docs/icons/telegram.svg @@ -0,0 +1,31 @@ + + + + Telegram + + + + + Telegram + + + + diff --git a/docs/icons/x.svg b/docs/icons/x.svg new file mode 100644 index 0000000..0a4fa39 --- /dev/null +++ b/docs/icons/x.svg @@ -0,0 +1,53 @@ + + + + + X + + + + + X + + + + diff --git a/docs/img/gh-social-preview.png b/docs/img/gh-social-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..a02b50d4e467c3977bba93ee7cc325bf2dd26141 GIT binary patch literal 320706 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

As(*E<4RoGiZThcjn^euXe$%I;!h;=Sq!hQ-q)3 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%0D|`)O8FpNu56)_JIAo0mxb} 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μ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 literal 0 HcmV?d00001 diff --git a/docs/img/screenshot.jpg b/docs/img/screenshot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a355d263cc1a41b0b0e79a8cfb82e81901bff28f GIT binary patch literal 101504 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 TPv6VG-v4fe1*zhB{F(b7*kyP> literal 0 HcmV?d00001 diff --git a/kde-to-sonic.csv b/kde-to-sonic.csv deleted file mode 100755 index a2c6d84..0000000 --- a/kde-to-sonic.csv +++ /dev/null @@ -1,16 +0,0 @@ -kf6-kglobalaccel,sonic-frameworks-keybind,ok -kf6-kwindowsystem,sonic-frameworks-windowsystem,ok -libksysguard,sonic-sysguard-library,ok -kinfocenter,sonic-system-info,maybe rebuild with lang oldname -libkscreen,sonic-screen-library,ok -kglobalacceld,sonic-keybind-daemon,ok -libplasma,sonic-interface-libraries,ok -kscreen,sonic-screen,maybe rebuild with lang oldname -kscreenlocker,sonic-screenlocker,! patch version number to 6.6.4 -kwin,sonic-win,ok -plasma-workspace,sonic-workspace,ok -plasma-login-manager,sonic-login-manager,postponed - ---- - -plasma-desktop,sonic-desktop-interface diff --git a/silver-sddm/silver-sddm.spec b/silver-sddm/silver-sddm.spec new file mode 100644 index 0000000..24d8c48 --- /dev/null +++ b/silver-sddm/silver-sddm.spec @@ -0,0 +1,42 @@ +# Written from scratch: a pure QML theme with no build system. +%define _disable_source_fetch 0 +%global debug_package %{nil} +%global reponame silver-sddm + +Name: silver-sddm +Version: 1.0.0 +Release: 1%{?dist} +Summary: Sonic Silver login screen themes for SonicDE +License: GPL-2.0-or-later +URL: https://github.com/Sonic-DE/%{reponame} +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz + +BuildArch: noarch + +Requires: sddm +Requires: qt6-qtdeclarative +Requires: qt6-qt5compat + +%description +The Sonic Silver login screen themes, in a light and a dark variant, for the +SonicDE login manager. + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%{nil} + +%install +mkdir -p %{buildroot}%{_datadir}/sddm/themes +cp -a Sonic-Silver Sonic-Silver-Light %{buildroot}%{_datadir}/sddm/themes/ + +%files +%license LICENSE.md +%doc README.md CHANGELOG +%{_datadir}/sddm/themes/Sonic-Silver/ +%{_datadir}/sddm/themes/Sonic-Silver-Light/ + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 1.0.0-1 +- Initial SonicDE package diff --git a/sonic-accounts-integration/sonic-accounts-integration.spec b/sonic-accounts-integration/sonic-accounts-integration.spec new file mode 100644 index 0000000..c3f1cf2 --- /dev/null +++ b/sonic-accounts-integration/sonic-accounts-integration.spec @@ -0,0 +1,214 @@ +# Generated for SonicDE from Fedora's kaccounts-integration.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-accounts-integration fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-accounts-integration +# Upstream KDE project: kaccounts-integration +%global oldname kaccounts-integration + +# EPEL10 does not have kf5 +%if 0%{?rhel} && 0%{?rhel} >= 10 +%bcond_with kf5 +%else +%bcond_without kf5 +%endif + +#Name: kaccounts-integration +Name: sonic-accounts-integration +Version: 26.04.3 +Release: 1%{?dist} +Summary: Small system to administer web accounts across the KDE desktop +License: CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.0-or-later +#URL: https://invent.kde.org/network/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/release-service/%%{version}/src/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz + +## upstream fixes + +## upstreamable fixes + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: sonic-frameworks-settings-utils-devel +BuildRequires: sonic-frameworks-qml-bridge-devel +BuildRequires: sonic-frameworks-io-devel +BuildRequires: sonic-frameworks-internationalization-devel +BuildRequires: sonic-frameworks-widgets-addons-devel +BuildRequires: sonic-frameworks-core-addons-devel +BuildRequires: sonic-frameworks-icon-themes-devel +BuildRequires: sonic-frameworks-settings-devel +BuildRequires: sonic-frameworks-keyring-devel +BuildRequires: sonic-frameworks-dbus-devel +BuildRequires: cmake(QCoro6) + +BuildRequires: pkgconfig(Qt6Gui) +BuildRequires: pkgconfig(Qt6Qml) + +BuildRequires: pkgconfig(accounts-qt6) +BuildRequires: pkgconfig(libaccounts-glib) >= 1.21 +BuildRequires: cmake(SignOnQt6) + +%if %{with kf5} +BuildRequires: kf5-rpm-macros +BuildRequires: kf5-kcmutils-devel +BuildRequires: kf5-kdeclarative-devel +BuildRequires: kf5-kio-devel +BuildRequires: kf5-ki18n-devel +BuildRequires: kf5-kwidgetsaddons-devel +BuildRequires: kf5-kcoreaddons-devel +BuildRequires: kf5-kiconthemes-devel +BuildRequires: kf5-kconfig-devel +BuildRequires: kf5-kwallet-devel +BuildRequires: kf5-kdbusaddons-devel +BuildRequires: cmake(QCoro5) + +BuildRequires: pkgconfig(Qt5Gui) +BuildRequires: pkgconfig(Qt5Qml) +BuildRequires: qt5-qtbase-private-devel + +BuildRequires: pkgconfig(accounts-qt5) +BuildRequires: cmake(SignOnQt5) +%endif + +# For AutoReq cmake-filesystem +BuildRequires: cmake + +Provides: kaccounts-integration = %{version}-%{release} +Conflicts: kaccounts-integration < %{version}-%{release} + +%description +Small system to administer web accounts for the sites and services +across the KDE desktop. + +%if %{with kf5} +%package qt5 +Summary: qt5 runtime for %{name} +Obsoletes: kaccounts < 15.03 +Provides: kaccounts = %{version}-%{release} +Obsoletes: sonic-accounts-integration < 24.01.75 +Provides: sonic-accounts-integration = %{version}-%{release} +# translations moved here +Conflicts: kde-l10n < 17.03 + +Provides: kaccounts-integration-qt5 = %{version}-%{release} +Conflicts: kaccounts-integration-qt5 < %{version}-%{release} + +%description qt5 +Small system to administer web accounts for the sites and services +across the KDE desktop. + +%package qt5-devel +Summary: Development files for %{name} +Requires: %{name}-qt5%{?_isa} = %{version}-%{release} +Requires: cmake(Qt5Widgets) +Requires: cmake(KF5CoreAddons) +Requires: cmake(AccountsQt5) +Requires: cmake(SignOnQt5) +Requires: pkgconfig(libaccounts-glib) +Requires: intltool +Obsoletes: kaccounts-integration-devel < 24.01.75 +Provides: kaccounts-integration-devel = %{version}-%{release} + +Provides: kaccounts-integration-qt5-devel = %{version}-%{release} +Conflicts: kaccounts-integration-qt5-devel < %{version}-%{release} + +%description qt5-devel +Headers, development libraries and documentation for %{name}. +%endif + +%package qt6 +Summary: qt6 runtime for %{name} + +Provides: kaccounts-integration-qt6 = %{version}-%{release} +Conflicts: kaccounts-integration-qt6 < %{version}-%{release} + +%description qt6 +Small system to administer web accounts for the sites and services +across the KDE desktop. + +%package qt6-devel +Summary: Development files for %{name} +Requires: %{name}-qt6%{?_isa} = %{version}-%{release} +Requires: cmake(Qt6Widgets) +Requires: cmake(KF6CoreAddons) +Requires: cmake(AccountsQt6) +Requires: cmake(SignOnQt6) +Requires: pkgconfig(libaccounts-glib) +Requires: intltool + +Provides: kaccounts-integration-qt6-devel = %{version}-%{release} +Conflicts: kaccounts-integration-qt6-devel < %{version}-%{release} + +%description qt6-devel +Headers, development libraries and documentation for %{name}. + + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +mkdir %{oldname}_qt6 +pushd %{oldname}_qt6 +%cmake_kf6 -S .. +%cmake_build +popd + +%if %{with kf5} +mkdir %{oldname}_qt5 +pushd %{oldname}_qt5 +%cmake_kf5 -DKF6_COMPAT_BUILD=ON -S .. +%cmake_build +popd +%endif + +%install +pushd %{oldname}_qt6 +%cmake_install +popd +%find_lang %{oldname} --all-name --with-html + +%if %{with kf5} +pushd %{oldname}_qt5 +%cmake_install +popd +%endif + +%files qt6 -f %{name}.lang +%doc README* +%license LICENSES/* +%{_kf6_datadir}/applications/kcm_kaccounts.desktop +%{_kf6_qtplugindir}/plasma/kcms/systemsettings/kcm_kaccounts.so +%{_kf6_plugindir}/kded/kded_accounts.so +%dir %{_qt6_plugindir}/kaccounts/daemonplugins +%{_qt6_plugindir}/kaccounts/daemonplugins/kaccounts_kio_webdav_plugin.so +%{_kf6_libdir}/libkaccounts6.so.* +%{_kf6_qmldir}/org/kde/kaccounts/ +%{_kf6_datadir}/qlogging-categories6/kaccounts.categories + +%files qt6-devel +%{_kf6_libdir}/libkaccounts6.so +%{_kf6_libdir}/cmake/KAccounts6/ +%{_includedir}/KAccounts6/ + +%if %{with kf5} +%files qt5 +%doc README* +%license LICENSES/* +%{_kf5_libdir}/libkaccounts.so.* +%{_kf5_qmldir}/org/kde/kaccounts/ +%{_kf5_datadir}/qlogging-categories5/kaccounts.categories + +%files qt5-devel +%{_kf5_libdir}/libkaccounts.so +%{_kf5_libdir}/cmake/KAccounts/ +%{_includedir}/KAccounts/ +%endif + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 26.04.3-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-activities-stats/sonic-activities-stats.spec b/sonic-activities-stats/sonic-activities-stats.spec new file mode 100644 index 0000000..1efe1da --- /dev/null +++ b/sonic-activities-stats/sonic-activities-stats.spec @@ -0,0 +1,102 @@ +# Generated for SonicDE from Fedora's plasma-activities-stats.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-activities-stats fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-activities-stats +# Upstream KDE project: plasma-activities-stats +%global oldname plasma-activities-stats + +#Name: plasma-activities-stats +Name: sonic-activities-stats +Summary: Library to access the usage statistics data collected by the KDE activity manager +Version: 6.7.4 +Release: 1%{?dist} + +License: CC0-1.0, GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +BuildRequires: boost-devel +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: cmake(KF6Config) +BuildRequires: sonic-rpm-macros +BuildRequires: pkgconfig + +BuildRequires: cmake(PlasmaActivities) + +BuildRequires: qt6-qtdeclarative-devel +BuildRequires: qt6-qtbase-devel + +# Renamed from kf6-kactivities-stats +Obsoletes: kf6-kactivities-stats < 1:%{version}-%{release} +Provides: kf6-kactivities-stats = 1:%{version}-%{release} + +# Renamed from kactivities-stats +Obsoletes: kactivities-stats < 5.27.81 + +Provides: plasma-activities-stats = %{version}-%{release} +Conflicts: plasma-activities-stats < %{version}-%{release} + +%description +%{summary}. + +%package devel +Summary: Developer files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: qt6-qtbase-devel +Obsoletes: kf6-kactivities-stats-devel < 1:%{version}-%{release} +Provides: kf6-kactivities-stats-devel = 1:%{version}-%{release} +Provides: plasma-activities-stats-devel = %{version}-%{release} +Conflicts: plasma-activities-stats-devel < %{version}-%{release} + +%description devel +%{summary}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: plasma-activities-stats-doc = %{version}-%{release} +Conflicts: plasma-activities-stats-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build + + +%install +%cmake_install + +%files +%doc MAINTAINER README.developers TODO +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/%{oldname}.* +%{_kf6_libdir}/libPlasmaActivitiesStats.so.1 +%{_kf6_libdir}/libPlasmaActivitiesStats.so.%{version} + +%files devel +%{_includedir}/PlasmaActivitiesStats/ +%{_kf6_libdir}/cmake/PlasmaActivitiesStats/ +%{_kf6_libdir}/libPlasmaActivitiesStats.so +%{_kf6_libdir}/pkgconfig/PlasmaActivitiesStats.pc +%{_qt6_docdir}/*.tags + +%files doc +%{_qt6_docdir}/*.qch + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-activities/sonic-activities.spec b/sonic-activities/sonic-activities.spec new file mode 100644 index 0000000..a571514 --- /dev/null +++ b/sonic-activities/sonic-activities.spec @@ -0,0 +1,106 @@ +# Generated for SonicDE from Fedora's plasma-activities.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-activities fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-activities +# Upstream KDE project: plasma-activities +%global oldname plasma-activities + +#Name: plasma-activities +Name: sonic-activities +Summary: Core components for the KDE Activity concept +Version: 6.7.4 +Release: 1%{?dist} + +License: CC0-1.0 AND GPL-2.0-or-later AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-3.0-only AND (LGPL-2.1-only OR LGPL-3.0-only) AND MIT +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +BuildRequires: boost-devel +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: sonic-rpm-macros +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtdeclarative-devel +Requires: kf6-filesystem + +# Renamed from kf6-kactivities +Obsoletes: kf6-kactivities < 1:%{version}-%{release} +Provides: kf6-kactivities = 1:%{version}-%{release} + +# Renamed from kactivities +Obsoletes: kactivities < 5.27.81 + +Provides: plasma-activities = %{version}-%{release} +Conflicts: plasma-activities < %{version}-%{release} + +%description +KActivities provides the infrastructure needed to manage a user's activities, +allowing them to switch between tasks, and for applications to update their +state to match the user's current activity. This includes a daemon, a library +for interacting with that daemon, and plugins for integration with other +frameworks. + +%package devel +Summary: Developer files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: qt6-qtbase-devel +Obsoletes: kf6-kactivities-devel < 1:%{version}-%{release} +Provides: kf6-kactivities-devel = 1:%{version}-%{release} +Provides: plasma-activities-devel = %{version}-%{release} +Conflicts: plasma-activities-devel < %{version}-%{release} + +%description devel +%{summary}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: plasma-activities-doc = %{version}-%{release} +Conflicts: plasma-activities-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build + +%install +%cmake_install + +%files +%doc README.md +%license LICENSES/*.txt +%{_kf6_bindir}/plasma-activities-cli6 +%{_kf6_datadir}/qlogging-categories6/plasma-activities.categories +%{_kf6_datadir}/qlogging-categories6/plasma-activities.renamecategories +%{_kf6_libdir}/libPlasmaActivities.so.7 +%{_kf6_libdir}/libPlasmaActivities.so.%{version} +%{_kf6_qmldir}/org/kde/activities/ + +%files devel +%{_includedir}/PlasmaActivities/ +%{_kf6_libdir}/cmake/PlasmaActivities/ +%{_kf6_libdir}/libPlasmaActivities.so +%{_kf6_libdir}/pkgconfig/PlasmaActivities.pc +#%%{_qt6_docdir}/*.tags + +%files doc +#%%{_qt6_docdir}/*.qch + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-activity-manager-daemon/sonic-activity-manager-daemon.spec b/sonic-activity-manager-daemon/sonic-activity-manager-daemon.spec new file mode 100644 index 0000000..1b3d557 --- /dev/null +++ b/sonic-activity-manager-daemon/sonic-activity-manager-daemon.spec @@ -0,0 +1,89 @@ +# Generated for SonicDE from Fedora's kactivitymanagerd.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-activity-manager-daemon fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-activity-manager-daemon +# Upstream KDE project: kactivitymanagerd +%global oldname kactivitymanagerd + +#Name: kactivitymanagerd +Name: sonic-activity-manager-daemon +Summary: Plasma service to manage user's activities +Version: 6.7.4 +Release: 1%{?dist} + +License: CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.1-only AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +BuildRequires: sonic-rpm-macros +BuildRequires: systemd-rpm-macros +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6DBus) +BuildRequires: cmake(Qt6Core5Compat) + +BuildRequires: cmake(KF6Crash) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: cmake(KF6GlobalAccel) +BuildRequires: cmake(KF6XmlGui) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6GuiAddons) + +BuildRequires: boost-devel + +# The kactivitymanagerd was split from KActivities in KF5 5.21, +# but thanks to our clever packaging kf5-kactivities package +# already contained only the kactivitymanagerd files +Obsoletes: kf5-kactivities < 5.21.0 + +# older ones (previously in kf5-kactivities) +Obsoletes: kactivities < 4.90.0 +Provides: kactivities%{?_isa} = %{version}-%{release} +Provides: kactivities = %{version}-%{release} + +Provides: kactivitymanagerd = %{version}-%{release} +Conflicts: kactivitymanagerd < %{version}-%{release} + +%description +%{summary}. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build + + +%install +%cmake_install + +%find_lang kactivities6 --with-qt + + +%files -f kactivities6.lang +%license LICENSES/* +%doc README.md +%{_kf6_datadir}/qlogging-categories6/kactivitymanagerd.categories +%{_libexecdir}/kactivitymanagerd +%{_kf6_libdir}/libkactivitymanagerd_plugin.so +%{_kf6_datadir}/dbus-1/services/org.kde.ActivityManager.service +%{_kf6_datadir}/krunner/dbusplugins/plasma-runnners-activities.desktop +%{_userunitdir}/plasma-kactivitymanagerd.service +%{_qt6_plugindir}/kactivitymanagerd1/ + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-audio-applet-pulse/sonic-audio-applet-pulse.spec b/sonic-audio-applet-pulse/sonic-audio-applet-pulse.spec new file mode 100644 index 0000000..eeb3942 --- /dev/null +++ b/sonic-audio-applet-pulse/sonic-audio-applet-pulse.spec @@ -0,0 +1,100 @@ +# Generated for SonicDE from Fedora's plasma-pa.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-audio-applet-pulse fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-audio-applet-pulse +# Upstream KDE project: plasma-pa +%global oldname plasma-pa + + +# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} + +#Name: plasma-pa +Name: sonic-audio-applet-pulse +Version: 6.7.4 +Release: 1%{?dist} +Summary: Plasma applet for audio volume management using PulseAudio + +License: BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-3.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros + +BuildRequires: cmake(KF6KCMUtils) +BuildRequires: cmake(KF6ConfigWidgets) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6Declarative) +BuildRequires: cmake(KF6DocTools) +BuildRequires: cmake(KF6GlobalAccel) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6Package) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6PulseAudioQt) +BuildRequires: cmake(KF6Svg) +BuildRequires: cmake(KF6StatusNotifierItem) + +BuildRequires: cmake(Plasma) + +BuildRequires: pkgconfig(libpulse) +BuildRequires: pkgconfig(libcanberra) +BuildRequires: qt6-qtbase-devel + +BuildRequires: perl-generators + +# runtime +BuildRequires: cmake(KF6Kirigami) +BuildRequires: cmake(KF6KirigamiAddons) +BuildRequires: cmake(KF6ItemModels) +Requires: sonic-frameworks-quick-ui +Requires: sonic-frameworks-quick-ui-addons +Requires: sonic-frameworks-data-models + +Requires: pulseaudio-daemon + + +Provides: plasma-pa = %{version}-%{release} +Conflicts: plasma-pa < %{version}-%{release} + +%description +%{summary}. + + +%prep +%autosetup -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build + + +%install +%cmake_install +%find_lang %{oldname} --all-name --with-html +# Not clear why we would need this. Deleting +rm -fv %{buildroot}%{_kf6_libdir}/libplasma-volume.so + + +%files -f %{name}.lang +%license LICENSES/* +%{_kf6_qmldir}/org/kde/plasma/private/volume/ +%{_kf6_qtplugindir}/plasma/kcms/systemsettings/kcm_pulseaudio.so +%{_kf6_qtplugindir}/kf6/kded/audioshortcutsservice.so +%{_kf6_qtplugindir}/plasma/applets/org.kde.plasma.volume.so +%{_kf6_datadir}/applications/kcm_pulseaudio.desktop +%{_kf6_libdir}/libplasma-volume.so.6 +%{_kf6_libdir}/libplasma-volume.so.%{version} +%{_kf6_datadir}/qlogging-categories6/plasmapa.categories + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-bluetooth-runtime/sonic-bluetooth-runtime.spec b/sonic-bluetooth-runtime/sonic-bluetooth-runtime.spec new file mode 100644 index 0000000..58b6485 --- /dev/null +++ b/sonic-bluetooth-runtime/sonic-bluetooth-runtime.spec @@ -0,0 +1,119 @@ +# Generated for SonicDE from Fedora's bluedevil.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-bluetooth-runtime fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-bluetooth-runtime +# Upstream KDE project: bluedevil +%global oldname bluedevil + + +# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} + +#Name: bluedevil +Name: sonic-bluetooth-runtime +Summary: Bluetooth stack for KDE +Version: 6.7.4 +Release: 1%{?dist} + +License: GPL-2.0-or-later +#URL: https://cgit.kde.org/%%{name}.git +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros + +BuildRequires: cmake(KF6BluezQt) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6Declarative) +BuildRequires: cmake(KF6DocTools) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: cmake(KF6KCMUtils) +BuildRequires: cmake(KF6KDED) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6Svg) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: cmake(KF6WindowSystem) +# runtime +BuildRequires: cmake(KF6Kirigami) + +# Plasma +BuildRequires: cmake(Plasma) + +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtdeclarative-devel +BuildRequires: shared-mime-info +BuildRequires: desktop-file-utils + +Provides: dbus-bluez-pin-helper + +Obsoletes: kbluetooth < 0.4.2-3 +Obsoletes: bluedevil-devel < 2.0.0-0.10 + +Requires: bluez >= 5 +Requires: bluez-obexd +Requires: sonic-daemon +Requires: pulseaudio-module-bluetooth +# runtime +Requires: sonic-frameworks-quick-ui + +# When -autostart was removed +Obsoletes: bluedevil-autostart < 5.2.95 + +Provides: bluedevil = %{version}-%{release} +Conflicts: bluedevil < %{version}-%{release} + +%description +BlueDevil is the bluetooth stack for KDE. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build + +%install +%cmake_install + +%find_lang %{oldname} --all-name --with-html + + +%check +desktop-file-validate %{buildroot}%{_kf6_datadir}/applications/org.kde.bluedevilsendfile.desktop +desktop-file-validate %{buildroot}%{_kf6_datadir}/applications/org.kde.bluedevilwizard.desktop + + +%files -f %{name}.lang +%doc README +%{_datadir}/mime/packages/bluedevil-mime.xml +%{_kf6_bindir}/bluedevil-sendfile +%{_kf6_bindir}/bluedevil-wizard +%{_kf6_datadir}/applications/kcm_bluetooth.desktop +%{_kf6_datadir}/applications/org.kde.bluedevilsendfile.desktop +%{_kf6_datadir}/applications/org.kde.bluedevilwizard.desktop +%{_kf6_datadir}/bluedevilwizard/ +%{_kf6_datadir}/knotifications6/bluedevil.notifyrc +%{_kf6_qmldir}/org/kde/bluedevil/ +%{_kf6_qtplugindir}/plasma/applets/org.kde.plasma.bluetooth.so +%{_kf6_datadir}/qlogging-categories6/bluedevil.categories +%{_kf6_datadir}/remoteview/bluetooth-network.desktop +%{_kf6_plugindir}/kded/*.so +%{_kf6_plugindir}/kio/*.so +%{_kf6_qmldir}/org/kde/plasma/private/bluetooth/ +%{_kf6_qtplugindir}/plasma/kcms/systemsettings/kcm_bluetooth.so + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-breeze/a74ad95349ec913f1042f5390dbd95a8341aea06.patch b/sonic-breeze/a74ad95349ec913f1042f5390dbd95a8341aea06.patch new file mode 100644 index 0000000..58fd789 --- /dev/null +++ b/sonic-breeze/a74ad95349ec913f1042f5390dbd95a8341aea06.patch @@ -0,0 +1,50 @@ +From a74ad95349ec913f1042f5390dbd95a8341aea06 Mon Sep 17 00:00:00 2001 +From: Akseli Lahtinen +Date: Fri, 14 Aug 2026 23:20:58 +0300 +Subject: [PATCH] Use font metrics to only inset where the text can spare it + +Applying the inset from aba0f922b unconditionally causes eliding in some +cases. Check the font metrics instead and take the inset only from items +that have the width to spare. + +BUG: 523118 + + +(cherry picked from commit f0b1d7534aa2356d7336241d0c7051522e8a6b68) + +Co-authored-by: Allen Hewes +--- + kstyle/breezestyle.cpp | 17 +++++++++++++++-- + 1 file changed, 15 insertions(+), 2 deletions(-) + +diff --git a/kstyle/breezestyle.cpp b/kstyle/breezestyle.cpp +index 3a9096524..f0d4dfe45 100644 +--- a/kstyle/breezestyle.cpp ++++ b/kstyle/breezestyle.cpp +@@ -1062,8 +1062,21 @@ QRect Style::subElementRect(SubElement element, const QStyleOption *option, cons + QRect rect = ParentStyleClass::subElementRect(element, option, widget); + if (viewItem) { + const QMargins margins = _helper->itemViewItemMargins(viewItem); +- rect.setRight(rect.right() - margins.right() - Metrics::ItemView_ItemPaddingWidth); +- rect.setLeft(rect.left() + margins.left() + Metrics::ItemView_ItemPaddingWidth); ++ const int leftInset = margins.left() + Metrics::ItemView_ItemPaddingWidth; ++ const int rightInset = margins.right() + Metrics::ItemView_ItemPaddingWidth; ++ ++ // Use the font metrics to inset only as far as the text can spare, ++ // so the inset itself cannot cause elision. ++ const int textMargin = proxy()->pixelMetric(PM_FocusFrameHMargin, option, widget) + 1; ++ const int available = rect.width() - 2 * textMargin; // viewItemDrawText() removes textMargin again ++ const int required = viewItem->fontMetrics.horizontalAdvance(viewItem->text); ++ const int inset = qBound(0, available - required, leftInset + rightInset); ++ ++ // Shrink both sides in proportion so the text stays where it was. ++ const int total = leftInset + rightInset; ++ const int right = total > 0 ? inset * rightInset / total : 0; ++ rect.setRight(rect.right() - right); ++ rect.setLeft(rect.left() + (inset - right)); + rect.moveTop(rect.top() + margins.top() - margins.bottom()); + } + +-- +GitLab + diff --git a/sonic-breeze/sonic-breeze.spec b/sonic-breeze/sonic-breeze.spec new file mode 100644 index 0000000..02e5df3 --- /dev/null +++ b/sonic-breeze/sonic-breeze.spec @@ -0,0 +1,202 @@ +# Generated for SonicDE from Fedora's plasma-breeze.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-breeze fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-breeze +# Upstream KDE project: breeze +%global oldname plasma-breeze + +%global base_name breeze +# EPEL10 does not have kf5 +%if 0%{?rhel} && 0%{?rhel} >= 10 +%bcond_with kf5 +%else +%bcond_without kf5 +%endif + +#Name: plasma-breeze +Name: sonic-breeze +Version: 6.7.4.3 +Release: 1%{?dist} +Summary: Artwork, styles and assets for the Breeze visual style for the Plasma Desktop + +License: BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND MIT +#URL: https://invent.kde.org/plasma/%%{base_name}.git +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{base_name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{base_name}-%%{version}.tar.xz.sig + +# Upstream Patches + +# Use font metrics to only inset where the text can spare it +# https://invent.kde.org/plasma/breeze/-/commit/a74ad95349ec913f1042f5390dbd95a8341aea06 +Patch0: a74ad95349ec913f1042f5390dbd95a8341aea06.patch + +# Misc +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: gettext + +%if %{with kf5} +# Qt5 +BuildRequires: kf5-rpm-macros +BuildRequires: cmake(KF5Config) +BuildRequires: cmake(KF5CoreAddons) +BuildRequires: cmake(KF5FrameworkIntegration) +BuildRequires: cmake(KF5GuiAddons) +BuildRequires: cmake(KF5Kirigami2) +BuildRequires: cmake(KF5WindowSystem) + +BuildRequires: cmake(Qt5DBus) +BuildRequires: cmake(Qt5Quick) +BuildRequires: cmake(Qt5Widgets) +BuildRequires: cmake(Qt5X11Extras) + +Requires: (%{name}-qt5 if qt5-qtbase-gui) +%endif + +# Qt6 +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(KDecoration3) +BuildRequires: cmake(KF6ColorScheme) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6FrameworkIntegration) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6KCMUtils) +BuildRequires: cmake(KF6KirigamiPlatform) +BuildRequires: cmake(KF6WindowSystem) + +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6DBus) +BuildRequires: cmake(Qt6Quick) +BuildRequires: cmake(Qt6Widgets) +BuildRequires: cmake(Qt6Svg) + +Requires: %{name}-qt6 + +# since we provide a cmake dev-like file +Provides: %{name}-devel = %{version}-%{release} + +Provides: plasma-breeze = %{version}-%{release} +Conflicts: plasma-breeze < %{version}-%{release} + +%description +%{summary}. + + +%package qt6 +Summary: Breeze application style for Qt6 +Requires: %{name}-common = %{version}-%{release} +Provides: plasma-breeze-qt6 = %{version}-%{release} +Conflicts: plasma-breeze-qt6 < %{version}-%{release} + +%description qt6 +%{summary}. + +%if %{with kf5} +%package qt5 +Summary: Breeze application style for Qt5 +Requires: %{name}-common = %{version}-%{release} +Provides: plasma-breeze-qt5 = %{version}-%{release} +Conflicts: plasma-breeze-qt5 < %{version}-%{release} + +%description qt5 +%{summary}. +%endif + +%package common +Summary: Common files shared between Plasma 5 and Plasma 6 versions of the Breeze style +BuildArch: noarch +Provides: plasma-breeze-common = %{version}-%{release} +Conflicts: plasma-breeze-common < %{version}-%{release} + +%description common +%{summary}. + +%package -n breeze-cursor-theme +Summary: Breeze cursor theme +BuildArch: noarch +Obsoletes: breeze-icon-theme < 5.17.0 +Provides: breeze-cursor-themes = %{version}-%{release} +%description -n breeze-cursor-theme +%{summary}. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +mkdir -p qt6build +pushd qt6build +%cmake_kf6 -S .. -DBUILD_QT6=ON -DBUILD_QT5=OFF +%cmake_build +popd + +%if %{with kf5} +mkdir -p qt5build +pushd qt5build +%cmake_kf5 -S .. -DBUILD_QT6=OFF -DBUILD_QT5=ON +%cmake_build +popd +%endif + + +%install +%if %{with kf5} +pushd qt5build +%cmake_install +popd +%endif + +pushd qt6build +%cmake_install +popd + +%find_lang breeze --all-name + + +%files -f breeze.lang +%license LICENSES/*.txt +%{_bindir}/breeze-settings6 +%{_bindir}/kcursorgen +%{_kf6_datadir}/applications/breezestyleconfig.desktop +%{_kf6_datadir}/applications/kcm_breezedecoration.desktop +%dir %{_kf6_qtplugindir}/kstyle_config/ +%{_kf6_qtplugindir}/kstyle_config/breezestyleconfig.so +%{_kf6_qtplugindir}/org.kde.kdecoration3.kcm/kcm_breezedecoration.so +%{_kf6_qtplugindir}/org.kde.kdecoration3/org.kde.breeze.so +%{_libdir}/cmake/Breeze/ + +%if %{with kf5} +%files qt5 +%{_kf5_qtplugindir}/styles/breeze5.so +%endif + +%files qt6 +%{_kf6_qtplugindir}/styles/breeze6.so + +%files common +%{_datadir}/color-schemes/*.colors +%{_datadir}/kstyle/themes/breeze.themerc +%{_datadir}/icons/hicolor/*/apps/breeze-settings.* +%dir %{_datadir}/QtCurve/ +%{_datadir}/QtCurve/Breeze.qtcurve +%{_datadir}/wallpapers/Next/ + +%files -n breeze-cursor-theme +%dir %{_kf6_datadir}/icons/Breeze_Light/ +%{_kf6_datadir}/icons/Breeze_Light/cursors/ +%{_kf6_datadir}/icons/Breeze_Light/cursors_scalable/ +%{_kf6_datadir}/icons/Breeze_Light/index.theme +%dir %{_kf6_datadir}/icons/breeze_cursors/ +%{_kf6_datadir}/icons/breeze_cursors/cursors/ +%{_kf6_datadir}/icons/breeze_cursors/cursors_scalable/ +%{_kf6_datadir}/icons/breeze_cursors/index.theme + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4.3-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-browser-integration/sonic-browser-integration.spec b/sonic-browser-integration/sonic-browser-integration.spec new file mode 100644 index 0000000..ef5d8be --- /dev/null +++ b/sonic-browser-integration/sonic-browser-integration.spec @@ -0,0 +1,100 @@ +# Generated for SonicDE from Fedora's plasma-browser-integration.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-browser-integration fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-browser-integration +# Upstream KDE project: plasma-browser-integration +%global oldname plasma-browser-integration + +#Name: plasma-browser-integration +Name: sonic-browser-integration +Summary: %{name} provides components necessary to integrate browsers into the Plasma Desktop +Version: 6.7.4 +Release: 1%{?dist} + +License: CC0-1.0 AND GPL-2.0-or-later AND GPL-3.0-or-later AND MIT +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +## downstream patches + +## upstream patches + +## upstreamable patches + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(Qt6Gui) +BuildRequires: cmake(Qt6DBus) +BuildRequires: cmake(Qt6Quick) +BuildRequires: cmake(Qt6Widgets) +BuildRequires: cmake(KF6Crash) +BuildRequires: cmake(KF6FileMetaData) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6ItemModels) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6Purpose) +BuildRequires: cmake(KF6Runner) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: cmake(KF6StatusNotifierItem) + +BuildRequires: cmake(PlasmaActivities) + +BuildRequires: sonic-workspace-devel >= %{version} + +Supplements: (sonic-workspace and chromium) +Supplements: (sonic-workspace and firefox) + +Provides: plasma-browser-integration = %{version}-%{release} +Conflicts: plasma-browser-integration < %{version}-%{release} + +%description +%{name} coupled with a browser plugin provides integration of the browser in the desktop. + +For more information, see +https://community.kde.org/Plasma/Browser_Integration + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 \ + -DMOZILLA_DIR:PATH=%{_libdir}/mozilla \ + -DLIBREWOLF_DIR:PATH=%{_libdir}/librewolf \ + -DWATERFOX_DIR:PATH=%{_libdir}/waterfox +%cmake_build + + +%install +%cmake_install +%find_lang %{oldname} --all-name + + +%files -f %{name}.lang +%license LICENSES/* +%config %{_sysconfdir}/chromium/native-messaging-hosts/org.kde.plasma.browser_integration.json +%config %{_sysconfdir}/opt/chrome/native-messaging-hosts/org.kde.plasma.browser_integration.json +%config %{_sysconfdir}/opt/edge/native-messaging-hosts/org.kde.plasma.browser_integration.json +%{_libdir}/waterfox/native-messaging-hosts/org.kde.plasma.browser_integration.json +%{_bindir}/plasma-browser-integration-host +%{_libdir}/mozilla/native-messaging-hosts/org.kde.plasma.browser_integration.json +%{_libdir}/librewolf/native-messaging-hosts/org.kde.plasma.browser_integration.json +%{_kf6_plugindir}/kded/browserintegrationreminder.so +%{_kf6_datadir}/krunner/dbusplugins/plasma-runner-browserhistory.desktop +%{_kf6_datadir}/krunner/dbusplugins/plasma-runner-browsertabs.desktop +%{_kf6_datadir}/applications/org.kde.plasma.browser_integration.host.desktop +%{_kf6_qtplugindir}/kf6/kded/browserintegrationflatpakintegrator.so + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-crypto-library/qca-qt6-pkgconfig.patch b/sonic-crypto-library/qca-qt6-pkgconfig.patch new file mode 100644 index 0000000..c3eeabe --- /dev/null +++ b/sonic-crypto-library/qca-qt6-pkgconfig.patch @@ -0,0 +1,20 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 4ec527c..1969afc 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -252,13 +252,13 @@ if(NOT WIN32) + set(PKGCONFIG_LIBS "-L\${libdir} -l${QCA_LIB_NAME}") + endif() + +- if(NOT BUILD_WITH_QT6) ++ # if(NOT BUILD_WITH_QT6) + # qca2.pc uses absolute paths. So it must be there. Don't rellocate this. + configure_file("qca2.pc.cmake" "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/pkgconfig/${QCA_PC_NAME}" @ONLY) + if(NOT DEVELOPER_MODE) + install(FILES "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/pkgconfig/${QCA_PC_NAME}" DESTINATION ${PKGCONFIG_INSTALL_PREFIX}) + endif() +- endif() ++ # endif() + endif() + + # strip CMAKE_INSTALL_PREFIX in all paths diff --git a/sonic-crypto-library/sonic-crypto-library.spec b/sonic-crypto-library/sonic-crypto-library.spec new file mode 100644 index 0000000..f7c1daf --- /dev/null +++ b/sonic-crypto-library/sonic-crypto-library.spec @@ -0,0 +1,515 @@ +# Generated for SonicDE from Fedora's qca.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-crypto-library fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-crypto-library +# Upstream KDE project: qca +%global oldname qca + +%if 0%{?fedora} < 34 && 0%{?rhel} < 9 +%global botan 1 +%endif + +%bcond_without qt5 +%bcond_without qt6 + +#global doc 1 +%global tests 1 + +#Name: qca +Name: sonic-crypto-library +Summary: Qt Cryptographic Architecture +Version: 2.3.10 +Release: 1%{?dist} + +License: LGPL-2.1-only +#URL: https://userbase.kde.org/QCA +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: http://download.kde.org/stable/qca/%%{version}/qca-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +# Also generate pkgconfig file for qt6 +Patch0: qca-qt6-pkgconfig.patch +## upstream patches + +# The openssl4 compatibility fix is already part of the SonicDE fork. + +## upstreamable patches + +BuildRequires: cmake >= 2.8.12 +BuildRequires: gcc-c++ +BuildRequires: libgcrypt-devel +BuildRequires: pkgconfig(libcrypto) pkgconfig(libssl) +BuildRequires: pkgconfig(nss) +BuildRequires: pkgconfig(libpkcs11-helper-1) +BuildRequires: pkgconfig(libsasl2) + + +%if 0%{?doc} +# apidocs +# may need to add some tex-related ones too -- rex +BuildRequires: doxygen-latex +BuildRequires: graphviz +%endif + + +Provides: qca = %{version}-%{release} +Conflicts: qca < %{version}-%{release} + +%description +Taking a hint from the similarly-named Java Cryptography Architecture, +QCA aims to provide a straightforward and cross-platform crypto API, +using Qt datatypes and conventions. QCA separates the API from the +implementation, using plugins known as Providers. The advantage of this +model is to allow applications to avoid linking to or explicitly depending +on any particular cryptographic library. This allows one to easily change +or upgrade crypto implementations without even needing to recompile the +application! + + +%if %{with qt5} +%package qt5 +Summary: Qt5 Cryptographic Architecture +BuildRequires: pkgconfig(Qt5Core) +%if ! 0%{?botan} +Obsoletes: qca-qt5-botan < %{version}-%{release} +%endif +# most runtime consumers seem to assume the ossl plugin be present +Recommends: %{name}-qt5-ossl%{?_isa} +Provides: qca-qt5 = %{version}-%{release} +Conflicts: qca-qt5 < %{version}-%{release} + +%description qt5 +Taking a hint from the similarly-named Java Cryptography Architecture, +QCA aims to provide a straightforward and cross-platform crypto API, +using Qt datatypes and conventions. QCA separates the API from the +implementation, using plugins known as Providers. The advantage of this +model is to allow applications to avoid linking to or explicitly depending +on any particular cryptographic library. This allows one to easily change +or upgrade crypto implementations without even needing to recompile the +application! + +%package qt5-devel +Summary: Qt5 Cryptographic Architecture development files +Requires: %{name}-qt5%{?_isa} = %{version}-%{release} +Provides: qca-qt5-devel = %{version}-%{release} +Conflicts: qca-qt5-devel < %{version}-%{release} + +%description qt5-devel +%{summary}. + +%if 0%{?botan} +%package qt5-botan +Summary: Botan plugin for the Qt5 Cryptographic Architecture +BuildRequires: pkgconfig(botan-2) +Requires: %{name}-qt5%{?_isa} = %{version}-%{release} +Provides: qca-qt5-botan = %{version}-%{release} +Conflicts: qca-qt5-botan < %{version}-%{release} + +%description qt5-botan +%{summary}. +%endif + +%package qt5-cyrus-sasl +Summary: Cyrus-SASL plugin for the Qt5 Cryptographic Architecture +Requires: %{name}-qt5%{?_isa} = %{version}-%{release} +Provides: qca-qt5-cyrus-sasl = %{version}-%{release} +Conflicts: qca-qt5-cyrus-sasl < %{version}-%{release} + +%description qt5-cyrus-sasl +%{summary}. + +%package qt5-gcrypt +Summary: Gcrypt plugin for the Qt5 Cryptographic Architecture +Requires: %{name}-qt5%{?_isa} = %{version}-%{release} +Provides: qca-qt5-gcrypt = %{version}-%{release} +Conflicts: qca-qt5-gcrypt < %{version}-%{release} + +%description qt5-gcrypt +%{summary}. + +%package qt5-gnupg +Summary: Gnupg plugin for the Qt Cryptographic Architecture +Requires: %{name}-qt5%{?_isa} = %{version}-%{release} +Requires: gnupg +Provides: qca-qt5-gnupg = %{version}-%{release} +Conflicts: qca-qt5-gnupg < %{version}-%{release} + +%description qt5-gnupg +%{summary}. + +%package qt5-logger +Summary: Logger plugin for the Qt5 Cryptographic Architecture +Requires: %{name}-qt5%{?_isa} = %{version}-%{release} +Provides: qca-qt5-logger = %{version}-%{release} +Conflicts: qca-qt5-logger < %{version}-%{release} + +%description qt5-logger +%{summary}. + +%package qt5-nss +Summary: Nss plugin for the Qt5 Cryptographic Architecture +Requires: %{name}-qt5%{?_isa} = %{version}-%{release} +Provides: qca-qt5-nss = %{version}-%{release} +Conflicts: qca-qt5-nss < %{version}-%{release} + +%description qt5-nss +%{summary}. + +%package qt5-ossl +Summary: Openssl plugin for the Qt5 Cryptographic Architecture +Requires: %{name}-qt5%{?_isa} = %{version}-%{release} +Provides: qca-qt5-ossl = %{version}-%{release} +Conflicts: qca-qt5-ossl < %{version}-%{release} + +%description qt5-ossl +%{summary}. + +%package qt5-pkcs11 +Summary: Pkcs11 plugin for the Qt5 Cryptographic Architecture +Requires: %{name}-qt5%{?_isa} = %{version}-%{release} +Provides: qca-qt5-pkcs11 = %{version}-%{release} +Conflicts: qca-qt5-pkcs11 < %{version}-%{release} + +%description qt5-pkcs11 +%{summary}. + +%package qt5-softstore +Summary: Pkcs11 plugin for the Qt5 Cryptographic Architecture +Requires: %{name}-qt5%{?_isa} = %{version}-%{release} +Provides: qca-qt5-softstore = %{version}-%{release} +Conflicts: qca-qt5-softstore < %{version}-%{release} + +%description qt5-softstore +%{summary}. +%endif + + +%if %{with qt6} +%package qt6 +BuildRequires: pkgconfig(Qt6Core) +BuildRequires: pkgconfig(Qt6Core5Compat) +Summary: Qt6 Cryptographic Architecture +# most runtime consumers seem to assume the ossl plugin be present +Recommends: %{name}-qt6-ossl%{?_isa} +Provides: qca-qt6 = %{version}-%{release} +Conflicts: qca-qt6 < %{version}-%{release} + +%description qt6 +Taking a hint from the similarly-named Java Cryptography Architecture, +QCA aims to provide a straightforward and cross-platform crypto API, +using Qt datatypes and conventions. QCA separates the API from the +implementation, using plugins known as Providers. The advantage of this +model is to allow applications to avoid linking to or explicitly depending +on any particular cryptographic library. This allows one to easily change +or upgrade crypto implementations without even needing to recompile the +application! + +%package qt6-devel +Summary: Qt6 Cryptographic Architecture development files +Requires: %{name}-qt6%{?_isa} = %{version}-%{release} +Provides: qca-qt6-devel = %{version}-%{release} +Conflicts: qca-qt6-devel < %{version}-%{release} + +%description qt6-devel +%{summary}. + +%if 0%{?botan} +%package qt6-botan +Summary: Botan plugin for the Qt6 Cryptographic Architecture +BuildRequires: pkgconfig(botan-2) +Requires: %{name}-qt6%{?_isa} = %{version}-%{release} +Provides: qca-qt6-botan = %{version}-%{release} +Conflicts: qca-qt6-botan < %{version}-%{release} + +%description qt6-botan +%{summary}. +%endif + +%package qt6-cyrus-sasl +Summary: Cyrus-SASL plugin for the Qt6 Cryptographic Architecture +Requires: %{name}-qt6%{?_isa} = %{version}-%{release} +Provides: qca-qt6-cyrus-sasl = %{version}-%{release} +Conflicts: qca-qt6-cyrus-sasl < %{version}-%{release} + +%description qt6-cyrus-sasl +%{summary}. + +%package qt6-gcrypt +Summary: Gcrypt plugin for the Qt6 Cryptographic Architecture +Requires: %{name}-qt6%{?_isa} = %{version}-%{release} +Provides: qca-qt6-gcrypt = %{version}-%{release} +Conflicts: qca-qt6-gcrypt < %{version}-%{release} + +%description qt6-gcrypt +%{summary}. + +%package qt6-gnupg +Summary: Gnupg plugin for the Qt Cryptographic Architecture +Requires: %{name}-qt6%{?_isa} = %{version}-%{release} +Requires: gnupg +Provides: qca-qt6-gnupg = %{version}-%{release} +Conflicts: qca-qt6-gnupg < %{version}-%{release} + +%description qt6-gnupg +%{summary}. + +%package qt6-logger +Summary: Logger plugin for the Qt6 Cryptographic Architecture +Requires: %{name}-qt6%{?_isa} = %{version}-%{release} +Provides: qca-qt6-logger = %{version}-%{release} +Conflicts: qca-qt6-logger < %{version}-%{release} + +%description qt6-logger +%{summary}. + +%package qt6-nss +Summary: Nss plugin for the Qt6 Cryptographic Architecture +Requires: %{name}-qt6%{?_isa} = %{version}-%{release} +Provides: qca-qt6-nss = %{version}-%{release} +Conflicts: qca-qt6-nss < %{version}-%{release} + +%description qt6-nss +%{summary}. + +%package qt6-ossl +Summary: Openssl plugin for the Qt6 Cryptographic Architecture +Requires: %{name}-qt6%{?_isa} = %{version}-%{release} +Provides: qca-qt6-ossl = %{version}-%{release} +Conflicts: qca-qt6-ossl < %{version}-%{release} + +%description qt6-ossl +%{summary}. + +%package qt6-pkcs11 +Summary: Pkcs11 plugin for the Qt6 Cryptographic Architecture +Requires: %{name}-qt6%{?_isa} = %{version}-%{release} +Provides: qca-qt6-pkcs11 = %{version}-%{release} +Conflicts: qca-qt6-pkcs11 < %{version}-%{release} + +%description qt6-pkcs11 +%{summary}. + +%package qt6-softstore +Summary: Pkcs11 plugin for the Qt6 Cryptographic Architecture +Requires: %{name}-qt6%{?_isa} = %{version}-%{release} +Provides: qca-qt6-softstore = %{version}-%{release} +Conflicts: qca-qt6-softstore < %{version}-%{release} + +%description qt6-softstore +%{summary}. + +%endif + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +# https://fedoraproject.org/wiki/Changes/dropingOfCertPemFile +export QC_CERTSTORE_PATH=/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem +cmake_opts="-Wno-dev \ + -DBUILD_TESTS:BOOL=%{?tests:ON}%{!?tests:OFF} \ + -DQCA_INSTALL_IN_QT_PREFIX:BOOL=ON \ + -DQCA_BINARY_INSTALL_DIR:STRING=%{_bindir} \ + -DQCA_MAN_INSTALL_DIR:PATH=%{_mandir} \ + -DWITH_botan_PLUGIN:BOOL=%{?botan:ON}%{?!botan:OFF}" +%if %{with qt5} +%define _vpath_builddir %{_target_platform}-qt5 +%cmake $cmake_opts \ + -DQCA_PLUGINS_INSTALL_DIR:PATH=%{_qt5_plugindir} \ + -DQCA_LIBRARY_INSTALL_DIR:PATH=%{_qt5_libdir} \ + -DQCA_FEATURE_INSTALL_DIR:PATH=%{_qt5_archdatadir}/mkspecs/features \ + -DQCA_INCLUDE_INSTALL_DIR:PATH=%{_qt5_headerdir} \ + -DQCA_PRIVATE_INCLUDE_INSTALL_DIR:PATH=%{_qt5_headerdir} + +%cmake_build +%endif + + +%if %{with qt6} +%define _vpath_builddir %{_target_platform}-qt6 +%cmake $cmake_opts \ + -DQT6=ON \ + -DQCA_PLUGINS_INSTALL_DIR:PATH=%{_qt6_plugindir} \ + -DQCA_LIBRARY_INSTALL_DIR:PATH=%{_qt6_libdir} \ + -DQCA_FEATURE_INSTALL_DIR:PATH=%{_qt6_archdatadir}/mkspecs/features \ + -DQCA_INCLUDE_INSTALL_DIR:PATH=%{_qt6_headerdir} \ + -DQCA_PRIVATE_INCLUDE_INSTALL_DIR:PATH=%{_qt6_headerdir} + +%cmake_build +%endif + + + +%if 0%{?doc} +%cmake_build --target doc +%endif + + +%install +%define _vpath_builddir %{_target_platform}-qt5 +%cmake_install + +%if %{with qt6} +%define _vpath_builddir %{_target_platform}-qt6 +%cmake_install +%endif + + +%if 0%{?doc} +# no make install target for docs yet +mkdir -p %{buildroot}%{_docdir}/qca +cp -a %{_target_platform}/apidocs/html/ \ + %{buildroot}%{_docdir}/qca/ +%endif + + +%check +%if %{with qt5} +%if 0%{?test} +%define _vpath_builddir %{_target_platform}-qt5 +export CTEST_OUTPUT_ON_FAILURE=1 +export PKG_CONFIG_PATH=%{buildroot}%{_libdir}/pkgconfig +# skip slow archs +%ifnarch %{arm} ppc64 s390x +test "$(pkg-config --modversion qca2-qt5)" = "%{version}" +%ctest --timeout 180 +%endif +%endif +%endif + +%if %{with qt6} +%if 0%{?test} +%define _vpath_builddir %{_target_platform}-qt6 +export CTEST_OUTPUT_ON_FAILURE=1 +export PKG_CONFIG_PATH=%{buildroot}%{_libdir}/pkgconfig +# skip slow archs +%ifnarch %{arm} ppc64 s390x +test "$(pkg-config --modversion qca2-qt6)" = "%{version}" +%ctest --timeout 180 +%endif +%endif +%endif + + +%if 0%{?doc} +%files doc +%{_docdir}/qca/html/ +%endif + + +%if %{with qt5} +%files qt5 +%doc README TODO +%license COPYING +%{_bindir}/mozcerts-qt5 +%{_bindir}/qcatool-qt5 +%{_mandir}/man1/qcatool-qt5.1* +%{_qt5_libdir}/libqca-qt5.so.2* +%dir %{_qt5_plugindir}/crypto/ + +%files qt5-devel +%{_qt5_headerdir}/QtCrypto +%{_qt5_libdir}/libqca-qt5.so +%{_libdir}/pkgconfig/qca2-qt5.pc +%{_libdir}/cmake/Qca-qt5/ +%{_qt5_archdatadir}/mkspecs/features/crypto.prf + +%if 0%{?botan} +%files qt5-botan +%doc plugins/qca-botan/README +%{_qt5_plugindir}/crypto/libqca-botan.so +%endif + +%files qt5-cyrus-sasl +%doc plugins/qca-gcrypt/README +%{_qt5_plugindir}/crypto/libqca-cyrus-sasl.so + +%files qt5-gcrypt +%{_qt5_plugindir}/crypto/libqca-gcrypt.so + +%files qt5-gnupg +%doc plugins/qca-cyrus-sasl/README +%{_qt5_plugindir}/crypto/libqca-gnupg.so + +%files qt5-logger +%doc plugins/qca-logger/README +%{_qt5_plugindir}/crypto/libqca-logger.so + +%files qt5-nss +%doc plugins/qca-nss/README +%{_qt5_plugindir}/crypto/libqca-nss.so + +%files qt5-ossl +%doc plugins/qca-ossl/README +%{_qt5_plugindir}/crypto/libqca-ossl.so + +%files qt5-pkcs11 +%doc plugins/qca-pkcs11/README +%{_qt5_plugindir}/crypto/libqca-pkcs11.so + +%files qt5-softstore +%doc plugins/qca-softstore/README +%{_qt5_plugindir}/crypto/libqca-softstore.so +%endif + + +%if %{with qt6} +%files qt6 +%doc README TODO +%license COPYING +%{_bindir}/mozcerts-qt6 +%{_bindir}/qcatool-qt6 +%{_mandir}/man1/qcatool-qt6.1* +%{_qt6_libdir}/libqca-qt6.so.2* +%dir %{_qt6_plugindir}/crypto/ + +%files qt6-devel +%{_qt6_headerdir}/QtCrypto +%{_qt6_libdir}/libqca-qt6.so +%{_libdir}/pkgconfig/qca2-qt6.pc +%{_libdir}/cmake/Qca-qt6/ + +%if 0%{?botan} +%files qt6-botan +%doc plugins/qca-botan/README +%{_qt6_plugindir}/crypto/libqca-botan.so +%endif + +%files qt6-cyrus-sasl +%doc plugins/qca-gcrypt/README +%{_qt6_plugindir}/crypto/libqca-cyrus-sasl.so + +%files qt6-gcrypt +%{_qt6_plugindir}/crypto/libqca-gcrypt.so + +%files qt6-gnupg +%doc plugins/qca-cyrus-sasl/README +%{_qt6_plugindir}/crypto/libqca-gnupg.so + +%files qt6-logger +%doc plugins/qca-logger/README +%{_qt6_plugindir}/crypto/libqca-logger.so + +%files qt6-nss +%doc plugins/qca-nss/README +%{_qt6_plugindir}/crypto/libqca-nss.so + +%files qt6-ossl +%doc plugins/qca-ossl/README +%{_qt6_plugindir}/crypto/libqca-ossl.so + +%files qt6-pkcs11 +%doc plugins/qca-pkcs11/README +%{_qt6_plugindir}/crypto/libqca-pkcs11.so + +%files qt6-softstore +%doc plugins/qca-softstore/README +%{_qt6_plugindir}/crypto/libqca-softstore.so +%endif + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 2.3.10-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-daemon/sonic-daemon.spec b/sonic-daemon/sonic-daemon.spec new file mode 100644 index 0000000..2f4d2e9 --- /dev/null +++ b/sonic-daemon/sonic-daemon.spec @@ -0,0 +1,100 @@ +# Generated for SonicDE from Fedora's kf6-kded.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-daemon fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-daemon +# Upstream KDE project: kded +%global oldname kf6-kded + +%global framework kded + +#Name: kf6-%%{framework} +Name: sonic-daemon +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 3 addon with extensible daemon for system-level services + +License: CC0-1.0 AND LGPL-2.0-only AND LGPL-2.0-or-later +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: http://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: http://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6Crash) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6DocTools) +BuildRequires: cmake(KF6Service) +BuildRequires: sonic-rpm-macros + +BuildRequires: qt6-qtbase-devel + +BuildRequires: systemd +Requires: kf6-filesystem + +Provides: kf6-kded = %{version}-%{release} +Conflicts: kf6-kded < %{version}-%{release} + +%description +KDED stands for KDE Daemon which isn't very descriptive. KDED runs +in the background and performs a number of small tasks. Some of these +tasks are built in, others are started on demand. + +Custom KDED modules can be provided by 3rd party frameworks and +applications. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Provides: kf6-kded-devel = %{version}-%{release} +Conflicts: kf6-kded-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build + +%install +%cmake_install + +%find_lang kded6 --with-man +# create/own this +mkdir -p %{buildroot}%{_kf6_plugindir}/kded + +%post +%systemd_user_post plasma-kded.service + +%preun +%systemd_user_preun plasma-kded.service + +%files -f kded6.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/%{framework}.* +%{_kf6_bindir}/kded6 +%{_kf6_datadir}/applications/org.kde.kded6.desktop +%{_kf6_datadir}/dbus-1/services/*.service +%{_kf6_mandir}/man8/kded6.8* +%dir %{_kf6_plugindir}/kded/ +%{_userunitdir}/plasma-kded6.service + +%files devel +%{_kf6_libdir}/cmake/KF6KDED/ +%{_kf6_datadir}/dbus-1/interfaces/*.xml + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-decoration/sonic-decoration.spec b/sonic-decoration/sonic-decoration.spec new file mode 100644 index 0000000..83edfdc --- /dev/null +++ b/sonic-decoration/sonic-decoration.spec @@ -0,0 +1,80 @@ +# Generated for SonicDE from Fedora's kdecoration.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-decoration fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-decoration +# Upstream KDE project: kdecoration +%global oldname kdecoration + +#Name: kdecoration +Name: sonic-decoration +Summary: A plugin-based library to create window decorations +Version: 6.7.4 +Release: 1%{?dist} + +License: LGPL-3.0-only AND LGPL-2.1-only AND CC0-1.0 +#URL: https://invent.kde.org/plasma/kdecoration +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: qt6-qtbase-devel + +# For AutoReq cmake-filesystem +BuildRequires: cmake +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: make + +Requires: kf6-filesystem + +Provides: kdecoration = %{version}-%{release} +Conflicts: kdecoration < %{version}-%{release} + +%description +%{summary}. + +%package devel +Summary: Developer files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Provides: kdecoration-devel = %{version}-%{release} +Conflicts: kdecoration-devel < %{version}-%{release} + +%description devel +%{summary}. + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build + +%install +%cmake_install +# create/own plugin dir +mkdir -p %{buildroot}%{_kf6_qtplugindir}/org.kde.kdecoration2/ + +%files +%license LICENSES/*.txt +%{_kf6_libdir}/libkdecorations3.so.6 +%{_kf6_libdir}/libkdecorations3.so.%{version} +%{_kf6_libdir}/libkdecorations3private.so.2 +%{_kf6_libdir}/libkdecorations3private.so.%{version} +%{_datadir}/locale/*/LC_MESSAGES/kdecoration.mo + +%files devel +%{_kf6_libdir}/libkdecorations3.so +%{_kf6_libdir}/libkdecorations3private.so +%{_kf6_libdir}/cmake/KDecoration3/ +%{_kf6_includedir}/kdecoration3_version.h +%{_includedir}/KDecoration3 + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-desktop-interface/sonic-desktop-interface.spec b/sonic-desktop-interface/sonic-desktop-interface.spec index 9a15f15..ed28ec0 100644 --- a/sonic-desktop-interface/sonic-desktop-interface.spec +++ b/sonic-desktop-interface/sonic-desktop-interface.spec @@ -10,15 +10,15 @@ Name: sonic-desktop-interface Summary: Plasma Desktop shell -Version: 6.6.4 -Release: 13%{?dist} +Version: 6.7.4.2 +Release: 1%{?dist} License: BSD-2-Clause AND BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) -#URL: https://invent.kde.org/plasma/%{name} +#URL: https://invent.kde.org/plasma/%%{name} URL: https://github.com/Sonic-DE/%{name} -#Source0: https://download.kde.org/%{stable_kf6}/plasma/%{maj_ver_kf6}.%{min_ver_kf6}.%{bug_ver_kf6}/%{name}-%{version}.tar.xz -#Source1: https://download.kde.org/%{stable_kf6}/plasma/%{maj_ver_kf6}.%{min_ver_kf6}.%{bug_ver_kf6}/%{name}-%{version}.tar.xz.sig +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{maj_ver_kf6}.%%{min_ver_kf6}.%%{bug_ver_kf6}/%%{name}-%%{version}.tar.xz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{maj_ver_kf6}.%%{min_ver_kf6}.%%{bug_ver_kf6}/%%{name}-%%{version}.tar.xz.sig Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz # breeze fedora sddm theme components @@ -64,8 +64,8 @@ BuildRequires: ibus-devel BuildRequires: scim-devel %endif -BuildRequires: kf6-rpm-macros -BuildRequires: extra-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: sonic-frameworks-cmake-modules BuildRequires: cmake(KF6DocTools) BuildRequires: cmake(KF6I18n) BuildRequires: cmake(KF6KCMUtils) @@ -93,7 +93,7 @@ BuildRequires: cmake(KSysGuard) BuildRequires: cmake(Plasma5Support) BuildRequires: sonic-screenlocker-devel BuildRequires: sonic-win-devel -BuildRequires: plasma-breeze-qt6 +BuildRequires: sonic-breeze-qt6 BuildRequires: sonic-workspace-devel BuildRequires: cmake(PlasmaActivities) @@ -131,7 +131,7 @@ Provides: kcm_touchpad = %{version}-%{release} Obsoletes: kcm_touchpad < 5.3.0 # for xserver-properties BuildRequires: xorg-x11-server-devel -Requires: kf6-kded +Requires: sonic-daemon # for kcm_keyboard BuildRequires: pkgconfig(libudev) @@ -157,7 +157,7 @@ Requires: xdg-utils >= 1.2.0~ Requires: kde-cli-tools # Qt Integration (brings in Breeze) -Requires: plasma-integration +Requires: sonic-qt-theme-bridge # Install systemsettings, full set of KIO slaves and write() notifications Requires: plasma-systemsettings @@ -171,11 +171,11 @@ Requires: sonic-win Requires: kmenuedit BuildRequires: cmake(KF6Kirigami) -Requires: kf6-kirigami%{?_isa} +Requires: sonic-frameworks-quick-ui%{?_isa} BuildRequires: cmake(KF6KirigamiAddons) -Requires: kf6-kirigami-addons%{?_isa} -BuildRequires: kf6-qqc2-desktop-style -Requires: kf6-qqc2-desktop-style%{?_isa} +Requires: sonic-frameworks-quick-ui-addons%{?_isa} +BuildRequires: sonic-frameworks-quick-desktop-style +Requires: sonic-frameworks-quick-desktop-style%{?_isa} BuildRequires: kpipewire Requires: kpipewire%{?_isa} BuildRequires: signon-plugin-oauth2-devel @@ -257,7 +257,7 @@ Requires: sonic-workspace >= %{maj_ver_kf6}.%{min_ver_kf6} # /usr/share/backgrounds/default.{jxl,png} Requires: desktop-backgrounds-compat # for jxl support -Requires: kf6-kimageformats +Requires: sonic-frameworks-image-formats BuildArch: noarch %description -n sddm-breeze @@ -327,7 +327,7 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/kaccess.desktop %{_kf6_qtplugindir}/plasma/kcms/systemsettings/*.so %{_kf6_qtplugindir}/plasma/kcms/systemsettings_qwidgets/*.so # due to missing xorg-libinput -#%{_kf6_qtplugindir}/plasma/kcminit/kcm_touchpad_init.so +#%%{_kf6_qtplugindir}/plasma/kcminit/kcm_touchpad_init.so %{_kf6_plugindir}/kded/*.so %{_kf6_plugindir}/krunner/krunner*.so %{_kf6_qmldir}/org/kde/plasma/activityswitcher @@ -343,15 +343,15 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/kaccess.desktop %endif %endif # due to missing xorg-libinput -#%{_kf6_datadir}/kcmmouse/ -#%{_kf6_qtplugindir}/plasma/kcminit/kcm_mouse_init.so +#%%{_kf6_datadir}/kcmmouse/ +#%%{_kf6_qtplugindir}/plasma/kcminit/kcm_mouse_init.so %{_datadir}/config.kcfg/*.kcfg %{_datadir}/kglobalaccel/org.kde.plasma.emojier.desktop # due to missing xorg-libinput -#%{_datadir}/kglobalaccel/org.kde.touchpadshortcuts.desktop +#%%{_datadir}/kglobalaccel/org.kde.touchpadshortcuts.desktop %{_datadir}/qlogging-categories6/*.categories # due to missing xorg-libinput -#%{_kf6_datadir}/dbus-1/interfaces/org.kde.touchpad.xml +#%%{_kf6_datadir}/dbus-1/interfaces/org.kde.touchpad.xml %{_kf6_datadir}/kcmkeys %{_kf6_datadir}/knsrcfiles/ %{_kf6_datadir}/kcmsolidactions/ @@ -359,7 +359,7 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/kaccess.desktop %{_kf6_datadir}/dbus-1/system.d/*.conf %{_kf6_datadir}/knotifications6/*.notifyrc # Non-existent for an unknown reason -#%{_datadir}/icons/hicolor/*/*/* +#%%{_datadir}/icons/hicolor/*/*/* %{_kf6_metainfodir}/*.xml %{_datadir}/applications/*.desktop %{_datadir}/dbus-1/system-services/*.service @@ -393,6 +393,9 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/kaccess.desktop %changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4.2-1 +- Update to SonicDE 6.7.4.2 from the hard fork; build on Enterprise Linux 10 and Fedora + * Fri Apr 10 2026 Steve Cossette - 6.6.4-1 - 6.6.4 diff --git a/sonic-disks/sonic-disks.spec b/sonic-disks/sonic-disks.spec new file mode 100644 index 0000000..dc78468 --- /dev/null +++ b/sonic-disks/sonic-disks.spec @@ -0,0 +1,89 @@ +# Generated for SonicDE from Fedora's plasma-disks.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-disks fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-disks +# Upstream KDE project: plasma-disks +%global oldname plasma-disks + +#Name: plasma-disks +Name: sonic-disks +Summary: Hard disk health monitoring for KDE Plasma +Version: 6.7.4 +Release: 1%{?dist} + +License: BSD-3-Clause AND CC0-1.0 AND FSFAP AND GPL-2.0-only AND GPL-3.0-only AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +BuildRequires: gcc-c++ +BuildRequires: make + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: sonic-frameworks-auth-devel +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6Declarative) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6Service) +BuildRequires: cmake(KF6Solid) +BuildRequires: cmake(KF6KCMUtils) + +BuildRequires: cmake(Qt6DBus) +BuildRequires: cmake(Qt6Core) + +BuildRequires: smartmontools +Requires: smartmontools +BuildRequires: desktop-file-utils + +%if 0%{?fedora} > 39 +# as per https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} +%endif + +Provides: plasma-disks = %{version}-%{release} +Conflicts: plasma-disks < %{version}-%{release} + +%description +Plasma Disks monitors S.M.A.R.T. data of disks and alerts the user when +signs of imminent failure appear. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build + +%install +%cmake_install +%find_lang %{oldname} --all-name + +%check +desktop-file-validate %{buildroot}/%{_datadir}/applications/kcm_disks.desktop + +%files -f %{name}.lang +%license LICENSES/*.txt +%{_libexecdir}/kf6/kauth/kded-smart-helper +%{_qt6_plugindir}/plasma/kcms/kinfocenter/kcm_disks.so +%{_kf6_plugindir}/kded/smart.so +%{_kf6_datadir}/applications/kcm_disks.desktop +%{_kf6_datadir}/dbus-1/system-services/org.kde.kded.smart.service +%{_kf6_datadir}/dbus-1/system.d/org.kde.kded.smart.conf +%{_kf6_datadir}/knotifications6/org.kde.kded.smart.notifyrc +%{_kf6_datadir}/metainfo/org.kde.plasma.disks.metainfo.xml +%{_kf6_datadir}/polkit-1/actions/org.kde.kded.smart.policy + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-dr-robotnik/drkonqi-installdbgsymbols.patch b/sonic-dr-robotnik/drkonqi-installdbgsymbols.patch new file mode 100644 index 0000000..25e726e --- /dev/null +++ b/sonic-dr-robotnik/drkonqi-installdbgsymbols.patch @@ -0,0 +1,37 @@ +diff --git a/src/doc/examples/installdbgsymbols_fedora.sh b/src/doc/examples/installdbgsymbols_fedora.sh +index 4a1254a..7ac3f91 100644 +--- a/src/doc/examples/installdbgsymbols_fedora.sh ++++ b/src/doc/examples/installdbgsymbols_fedora.sh +@@ -27,12 +27,12 @@ run_in_terminal() + mkfifo $fifo + + # start terminal +- konsole -e sh -c "echo \$\$ > $fifo; $1; exit_status=\$?; sleep 1; rm $fifo; echo \$exit_status > $fifo" & ++ konsole -e sh -c "echo \$\$ > $fifo; set -x ; $1; exit_status=\$?; sleep 10; rm $fifo; echo \$exit_status > $fifo" & + + # wait for it to finish + local pid=`cat $fifo` + while [ "$?" = "0" ]; do +- sleep 1 ++ sleep 10 + kill -0 $pid 2>/dev/null + done + +@@ -65,7 +65,7 @@ check_dep() + fi + } + +-check_dep debuginfo-install ++# check_dep debuginfo-install + check_dep konsole + + # start searching for packages +@@ -80,7 +80,7 @@ done + # filter out duplicates + packages=`echo "$packages" | tr " " "\n" | sort | uniq | tr "\n" " "` + +-run_in_terminal "su -c \"debuginfo-install $packages\"" ++run_in_terminal "pkexec dnf debuginfo-install $packages" + + if [ "$?" = "1" ]; then + exit 3 diff --git a/sonic-dr-robotnik/sonic-dr-robotnik.spec b/sonic-dr-robotnik/sonic-dr-robotnik.spec new file mode 100644 index 0000000..c24e9b8 --- /dev/null +++ b/sonic-dr-robotnik/sonic-dr-robotnik.spec @@ -0,0 +1,141 @@ +# Generated for SonicDE from Fedora's plasma-drkonqi.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-dr-robotnik fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-dr-robotnik +# Upstream KDE project: drkonqi +%global oldname plasma-drkonqi + +%global base_name drkonqi + + +# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} + +#Name: plasma-drkonqi +Name: sonic-dr-robotnik +Summary: DrKonqi crash handler for KF6/Plasma6 +Version: 6.7.4.1 +Release: 1%{?dist} +License: BSD-2-Clause AND BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.1-only AND LGPL-3.0-only AND LGPL-3.0-or-later AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/plasma/%%{base_name} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{base_name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{base_name}-%%{version}.tar.xz.sig + +## upstreamable Patches +# dnf debuginfo-install +Patch: drkonqi-installdbgsymbols.patch + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: qt6-qtbase-devel +BuildRequires: systemd-rpm-macros +BuildRequires: desktop-file-utils + +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6Declarative) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6Service) +BuildRequires: cmake(KF6ConfigWidgets) +BuildRequires: cmake(KF6JobWidgets) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6Crash) +BuildRequires: cmake(KF6Wallet) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: cmake(KF6IdleTime) +BuildRequires: cmake(KF6StatusNotifierItem) +BuildRequires: cmake(KF6SyntaxHighlighting) +BuildRequires: cmake(PolkitQt6-1) +BuildRequires: systemd-devel +BuildRequires: git-core + +Requires: sonic-frameworks-quick-ui +Requires: sonic-frameworks-data-models +Requires: sonic-frameworks-settings-utils +Requires: python3dist(psutil) +Requires: python3dist(pygdbmi) +Requires: python3dist(sentry-sdk) +Requires: systemd-udev +Requires: elfutils + +# retired from plasma-workspace +Obsoletes: plasma-workspace-drkonqi < 5.10.95 +Provides: plasma-workspace-drkonqi = %{version}-%{release} + +%if (0%{?fedora} && 0%{?fedora} < 41) || (0%{?rhel} && 0%{?rhel} < 11) +Requires: (dnf-command(debuginfo-install) if dnf) +%endif +Requires: sonic-terminal +Requires: polkit + + +Provides: plasma-drkonqi = %{version}-%{release} +Conflicts: plasma-drkonqi < %{version}-%{release} + +%description +%{summary} + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 -DWITH_PYTHON_VENDORING=OFF -DWITH_GDB12=ON +%cmake_build + +%install +%cmake_install +# installdbgsymbols script +install -p -D -m755 src/doc/examples/installdbgsymbols_fedora.sh \ + %{buildroot}%{_libexecdir}/installdbgsymbols.sh + +%find_lang all --with-html --with-qt --all-name +grep drkonqi.mo all.lang > plasma-drkonqi.lang + +%post +%systemd_user_post drkonqi-sentry-postman.service + +%preun +%systemd_user_preun drkonqi-sentry-postman.service + +%postun +%systemd_user_postun drkonqi-sentry-postman.service + +%check +desktop-file-validate %{buildroot}/%{_datadir}/applications/org.kde.{drkonqi.coredump.gui,drkonqi}.desktop + +%files -f plasma-drkonqi.lang +%license LICENSES/* +%{_bindir}/drkonqi-coredump-gui +%{_libexecdir}/drkonqi +%{_libexecdir}/installdbgsymbols.sh +%{_libexecdir}/drkonqi-coredump-cleanup +%{_libexecdir}/drkonqi-coredump-launcher +%{_libexecdir}/drkonqi-coredump-processor +%{_kf6_datadir}/drkonqi/ +%{_kf6_datadir}/applications/org.kde.drkonqi.coredump.gui.desktop +%{_kf6_datadir}/applications/org.kde.drkonqi.desktop +%{_kf6_datadir}/qlogging-categories6/drkonqi.categories +%{_userunitdir}/drkonqi-coredump-* +%{_unitdir}/drkonqi-coredump-processor@.service +%{_kf6_datadir}/knotifications6/drkonqi-coredump-launcher.notifyrc +%{_bindir}/drkonqi-sentry-data +%{_unitdir}/systemd-coredump@.service.wants/drkonqi-coredump-processor@.service +%{_userunitdir}/default.target.wants/* +%{_userunitdir}/drkonqi-sentry-postman.* +%{_userunitdir}/plasma-core.target.wants/drkonqi-* +%{_userunitdir}/sockets.target.wants/drkonqi-coredump-launcher.socket +%{_userunitdir}/timers.target.wants/drkonqi-* +%{_libexecdir}/drkonqi-sentry-postman +%{_kf6_libexecdir}/drkonqi-polkit-helper +%{_kf6_datadir}/dbus-1/system-services/org.kde.drkonqi.service +%{_kf6_datadir}/dbus-1/system.d/org.kde.drkonqi.conf +%{_kf6_datadir}/polkit-1/actions/org.kde.drkonqi.policy + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4.1-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-drawing-tablet/sonic-drawing-tablet.spec b/sonic-drawing-tablet/sonic-drawing-tablet.spec new file mode 100644 index 0000000..f66337d --- /dev/null +++ b/sonic-drawing-tablet/sonic-drawing-tablet.spec @@ -0,0 +1,108 @@ +# Generated for SonicDE from Fedora's kcm_wacomtablet.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-drawing-tablet fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-drawing-tablet +# Upstream KDE project: wacomtablet +%global oldname kcm_wacomtablet + + +# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} + +#Name: kcm_wacomtablet +Name: sonic-drawing-tablet +Summary: KDE Control module for Wacom Graphictablets +Version: 6.7.4 +Release: 1%{?dist} + +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later +#URL: https://invent.kde.org/system/wacomtablet +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: http://download.kde.org/%%{stable_kf6}/plasma/%%{version}/wacomtablet-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: http://download.kde.org/%%{stable_kf6}/plasma/%%{version}/wacomtablet-%%{version}.tar.xz.sig + +## upstream patches + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6DocTools) +BuildRequires: cmake(KF6GlobalAccel) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: cmake(KF6XmlGui) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6KCMUtils) +BuildRequires: cmake(KF6KirigamiPlatform) +BuildRequires: cmake(Plasma5Support) +BuildRequires: cmake(Plasma) +BuildRequires: cmake(KF6XmlGui) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: sonic-rpm-macros + +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtbase-private-devel +BuildRequires: qt6-qtdeclarative-devel + +BuildRequires: pkgconfig(libwacom) +BuildRequires: pkgconfig(xcb-xinput) +BuildRequires: pkgconfig(xi) +BuildRequires: pkgconfig(xorg-wacom) +BuildRequires: pkgconfig(xrandr) + +ExcludeArch: s390 s390x + +Obsoletes: kcm-wacomtablet < 1.3.7-2 +Provides: kcm-wacomtablet = %{version}-%{release} + +Provides: kcm_wacomtablet = %{version}-%{release} +Conflicts: kcm_wacomtablet < %{version}-%{release} + +%description +This module implements a GUI for the Wacom Linux Drivers and extends it +with profile support to handle different button/pen layouts per profile. + + +%prep +%autosetup -n %{reponame}-%{version} + + +%build +%cmake_kf6 + +%cmake_build + + +%install +%cmake_install + +%find_lang %{oldname} --all-name --with-html + + +%files -f %{name}.lang +%doc AUTHORS +%license COPYING* +%{_datadir}/dbus-1/interfaces/org.kde.Wacom*.xml +%{_kf6_bindir}/kde_wacom_tabletfinder +%{_kf6_datadir}/applications/kcm_wacomtablet.desktop +%{_kf6_datadir}/applications/kde_wacom_tabletfinder.desktop +%{_kf6_datadir}/knotifications6/wacomtablet.notifyrc +%{_kf6_datadir}/plasma/plasmoids/org.kde.plasma.wacomtablet/ +%{_kf6_datadir}/plasma5support/services/wacomtablet.operations +%{_kf6_datadir}/wacomtablet/ +%{_kf6_datadir}/qlogging-categories6/wacomtablet.categories +%{_kf6_metainfodir}/org.kde.wacomtablet.metainfo.xml +%{_qt6_plugindir}/plasma/kcms/systemsettings_qwidgets/kcm_wacomtablet.so +%{_kf6_plugindir}/kded/wacomtablet.so +%{_qt6_plugindir}/plasma5support/dataengine/plasma_engine_wacomtablet.so + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-ecco/sonic-ecco.spec b/sonic-ecco/sonic-ecco.spec new file mode 100644 index 0000000..5cd1647 --- /dev/null +++ b/sonic-ecco/sonic-ecco.spec @@ -0,0 +1,190 @@ +# Generated for SonicDE from Fedora's dolphin.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-ecco fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-ecco +# Upstream KDE project: dolphin +%global oldname dolphin + +%global tests 1 + +#Name: dolphin +Name: sonic-ecco +Summary: KDE File Manager +Version: 26.04.3.2 +Release: 1%{?dist} + +License: BSD-2-Clause AND BSD-3-Clause AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/system/dolphin +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/release-service/%%{maj_ver_kf6}.%%{min_ver_kf6}.%%{bug_ver_kf6}/src/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz + +# Upstream + +BuildRequires: desktop-file-utils +BuildRequires: libappstream-glib +BuildRequires: systemd-rpm-macros + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros + +BuildRequires: cmake(KF6Baloo) +# baloo-widget is part of Gear like Dolphin thus both versions need to match. +# We use the major.minor.patch macros to not fail the build on hotfix releases. +BuildRequires: cmake(KF6BalooWidgets) >= %{maj_ver_kf6}.%{min_ver_kf6}.%{bug_ver_kf6} +BuildRequires: cmake(KF6Bookmarks) +BuildRequires: cmake(KF6Codecs) +BuildRequires: cmake(KF6Completion) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6Crash) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6DocTools) +BuildRequires: cmake(KF6FileMetaData) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: cmake(KF6KCMUtils) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6NewStuff) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6Parts) +BuildRequires: cmake(KF6Solid) +BuildRequires: cmake(KF6TextWidgets) +BuildRequires: cmake(KF6UserFeedback) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: cmake(KF6GuiAddons) + +BuildRequires: cmake(PlasmaActivities) + +BuildRequires: cmake(Qt6Concurrent) +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6DBus) +BuildRequires: cmake(Qt6Gui) +BuildRequires: cmake(Qt6Widgets) +BuildRequires: cmake(Qt6Multimedia) +BuildRequires: qt6-qtbase-private-devel + +BuildRequires: cmake(packagekitqt6) +BuildRequires: cmake(Phonon4Qt6) + +%if 0%{?tests} +BuildRequires: xorg-x11-server-Xvfb +BuildRequires: rubygem(test-unit) +%endif + +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +Recommends: konsole-part%{?_isa} +Recommends: kio-fuse%{?_isa} +Recommends: sonic-frameworks-io-extras%{?_isa} +Recommends: %{name}-plugins +# Image Previews +Recommends: sonic-frameworks-image-formats%{?_isa} +Recommends: qt6-qtimageformats%{?_isa} +Recommends: ffmpegthumbs%{?_isa} + +Provides: dolphin = %{version}-%{release} +Conflicts: dolphin < %{version}-%{release} + +%description +%{summary}. + +%package libs +Summary: Dolphin runtime libraries +Provides: dolphin-libs = %{version}-%{release} +Conflicts: dolphin-libs < %{version}-%{release} + +%description libs +%{summary}. + +%package devel +Summary: Developer files for %{name} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: qt6-qtbase-devel%{?_isa} +Requires: sonic-frameworks-io-devel%{?_isa} +Provides: dolphin-devel = %{version}-%{release} +Conflicts: dolphin-devel < %{version}-%{release} + +%description devel +%{summary}. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 \ + %{?flatpak:-DFLATPAK:BOOL=ON} \ + -DKDE_INSTALL_SYSTEMDUSERUNITDIR=%{_userunitdir} \ + -DBUILD_TESTING:BOOL=%{?tests:ON}%{!?tests:OFF} + +%cmake_build + + +%install +%cmake_install + +%find_lang dolphin --all-name --with-html + + +%check +appstream-util validate-relax --nonet %{buildroot}%{_kf6_metainfodir}/org.kde.%{oldname}.appdata.xml +desktop-file-validate %{buildroot}%{_kf6_datadir}/applications/org.kde.%{oldname}.desktop +%if 0%{?tests} +xvfb-run -a bash -c "%ctest" || : +%endif + + +%files -f dolphin.lang +%license LICENSES/* +%doc README* +%{_kf6_datadir}/qlogging-categories6/dolphin.* +%{_kf6_bindir}/dolphin +%{_kf6_bindir}/servicemenuinstaller +%{_kf6_datadir}/config.kcfg/dolphin_* +%{_kf6_datadir}/knsrcfiles/* +%if 0%{?flatpak} +%{_datadir}/dbus-1/services/org.freedesktop.FileManager1.service +%else +%{_datadir}/dbus-1/services/org.kde.dolphin.FileManager1.service +%endif +%{_userunitdir}/plasma-dolphin.service +%{_kf6_metainfodir}/org.kde.%{oldname}.appdata.xml +%{_kf6_datadir}/applications/org.kde.%{oldname}.desktop +%dir %{_kf6_datadir}/kglobalaccel/ +%{_kf6_datadir}/kglobalaccel/org.kde.dolphin.desktop +%{_kf6_datadir}/kconf_update/dolphin_detailsmodesettings.upd +%{_kf6_datadir}/kconf_update/dolphin_replace_view_mode_with_view_settings_in_toolbar.py +%{_kf6_datadir}/kconf_update/dolphin_replace_view_mode_with_view_settings_in_toolbar.upd +%{_kf6_datadir}/kconf_update/dolphin_tab_key_shortcut_for_focus_other_view.* +%{_kf6_libdir}/kconf_update_bin/dolphin_25.04_update_statusandlocationbarssettings +%{_kf6_datadir}/kconf_update/dolphin_statusandlocationbarssettings.upd +%dir %{_kf6_datadir}/dolphin +%{_kf6_datadir}/dolphin/dolphinpartactions.desktop +%{_kf6_datadir}/zsh/site-functions/_dolphin +%{_kf6_datadir}/icons/hicolor/scalable/apps/org.kde.dolphin.svg +%{_kf6_libdir}/kconf_update_bin/dolphin_update_splitviewsettings + +%files libs +%{_kf6_libdir}/libdolphinprivate.so.* +%{_kf6_libdir}/libdolphinvcs.so.* +%{_kf6_plugindir}/parts/dolphinpart.so +%{_kf6_qtplugindir}/dolphin/ +%{_kf6_qtplugindir}/kf6/kfileitemaction/movetonewfolderitemaction.so +%{_kf6_qtplugindir}/kf6/kfileitemaction/setfoldericonitemaction.so +%{_kf6_qtplugindir}/kf6/kfileitemaction/hidefileitemaction.so + +%files devel +%{_includedir}/Dolphin/ +%{_includedir}/dolphin*_export.h +%{_kf6_libdir}/cmake/DolphinVcs/ +%{_kf6_libdir}/libdolphinvcs.so +%{_datadir}/dbus-1/interfaces/org.freedesktop.FileManager1.xml + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 26.04.3.2-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-exiv2-library/sonic-exiv2-library.spec b/sonic-exiv2-library/sonic-exiv2-library.spec new file mode 100644 index 0000000..04a9b3f --- /dev/null +++ b/sonic-exiv2-library/sonic-exiv2-library.spec @@ -0,0 +1,85 @@ +# Generated for SonicDE from Fedora's libkexiv2.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-exiv2-library fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-exiv2-library +# Upstream KDE project: libkexiv2 +%global oldname libkexiv2 + +#Name: libkexiv2 +Name: sonic-exiv2-library +Summary: A wrapper around Exiv2 library +Version: 26.04.3 +Release: 1%{?dist} + +License: BSD-3-Clause AND CC0-1.0 AND GPL-2.0-or-later +#URL: https://invent.kde.org/graphics/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: http://download.kde.org/%%{stable_kf6}/release-service/%%{version}/src/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz + +## upstream patches (master branch) + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(Qt6Gui) +BuildRequires: cmake(Qt6Core5Compat) +BuildRequires: pkgconfig(exiv2) + + +%global _description %{expand: +Libkexiv2 is a wrapper around Exiv2 library to manipulate pictures metadata +as EXIF IPTC and XMP.} + +Provides: libkexiv2 = %{version}-%{release} +Conflicts: libkexiv2 < %{version}-%{release} + +%description %{_description} + +%package qt6 +Summary: Qt6 version of %{name} +Provides: libkexiv2-qt6 = %{version}-%{release} +Conflicts: libkexiv2-qt6 < %{version}-%{release} + +%description qt6 +%{_description} + +%package qt6-devel +Summary: Development files for %{name}-qt6 +Requires: %{name}-qt6%{?_isa} = %{version}-%{release} +Requires: cmake(Qt6Gui) +Provides: libkexiv2-qt6-devel = %{version}-%{release} +Conflicts: libkexiv2-qt6-devel < %{version}-%{release} + +%description qt6-devel +%{summary}. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build + +%install +%cmake_install + + +%files qt6 +%doc AUTHORS README +%license LICENSES/* +%{_datadir}/qlogging-categories6/*%{oldname}.* +%{_libdir}/libKExiv2Qt6.so.0 +%{_libdir}/libKExiv2Qt6.so.5.1.0 + +%files qt6-devel +%{_libdir}/libKExiv2Qt6.so +%{_includedir}/KExiv2Qt6/ +%{_libdir}/cmake/KExiv2Qt6/ + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 26.04.3-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-file-search-ui/sonic-file-search-ui.spec b/sonic-file-search-ui/sonic-file-search-ui.spec new file mode 100644 index 0000000..eec43b0 --- /dev/null +++ b/sonic-file-search-ui/sonic-file-search-ui.spec @@ -0,0 +1,80 @@ +# Generated for SonicDE from Fedora's plasma-milou.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-file-search-ui fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-file-search-ui +# Upstream KDE project: milou +%global oldname plasma-milou + +%define base_name milou + + +# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} + +#Name: plasma-%%{base_name} +Name: sonic-file-search-ui +Version: 6.7.4 +Release: 1%{?dist} +Summary: A dedicated KDE search application built on top of Baloo + +License: CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.1-only AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/plasma/%%{base_name}.git +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{base_name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{base_name}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros + +BuildRequires: cmake(KF6Baloo) +BuildRequires: cmake(KF6Declarative) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6ItemModels) +BuildRequires: cmake(KF6Runner) +BuildRequires: cmake(KF6Svg) +BuildRequires: cmake(KF6KirigamiPlatform) + +# Qt +BuildRequires: qt6-qtbase-devel + +# Plasma +BuildRequires: cmake(Plasma) + +Requires: kf6-filesystem + +Obsoletes: kde-plasma-milou < 5.0.0 +Provides: kde-plasma-milou = %{version}-%{release} + +Provides: plasma-milou = %{version}-%{release} +Conflicts: plasma-milou < %{version}-%{release} + +%description +%{summary}. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build + + +%install +%cmake_install +%find_lang milou --with-qt --all-name + + +%files -f milou.lang +%license LICENSES/* +%{_kf6_qmldir}/org/kde/milou/ +%{_kf6_qtplugindir}/plasma/applets/org.kde.milou.so + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-firewall/sonic-firewall.spec b/sonic-firewall/sonic-firewall.spec new file mode 100644 index 0000000..fd16c9d --- /dev/null +++ b/sonic-firewall/sonic-firewall.spec @@ -0,0 +1,136 @@ +# Generated for SonicDE from Fedora's plasma-firewall.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-firewall fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-firewall +# Upstream KDE project: plasma-firewall +%global oldname plasma-firewall + +# Disable ufw for RHEL +# TODO: Consider dropping it for Fedora too +# Cf. https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/GNC2UEHAE7VVSN6K24GBJYSIUNCLKJ6L/ +%bcond backend_ufw %[%{undefined rhel}] + + +# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} + +#Name: plasma-firewall +Name: sonic-firewall +Version: 6.7.4 +Release: 1%{?dist} +Summary: Control Panel for your system firewall + +License: BSD-3-Clause AND CC0-1.0 AND FSFAP AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND GPL-3.0-or-later AND (GPL-2.0-only OR GPL-3.0-only) +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: http://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: http://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +BuildRequires: gcc-c++ +BuildRequires: make +BuildRequires: cmake + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(KF6KCMUtils) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6Declarative) +BuildRequires: cmake(KF6I18n) + +BuildRequires: desktop-file-utils +BuildRequires: libappstream-glib + +BuildRequires: qt6-qtbase-devel + +# Owns KCM directories +Requires: sonic-frameworks-settings-utils%{?_isa} + +Requires: %{name}-backend = %{version}-%{release} +Suggests: %{name}-firewalld + +Provides: plasma-firewall = %{version}-%{release} +Conflicts: plasma-firewall < %{version}-%{release} + +%description +%{summary}. + +%package firewalld +Summary: FirewallD backend for Plasma Firewall +Requires: %{name}%{?_isa} = %{version}-%{release} +Provides: %{name}-backend = %{version}-%{release} +Conflicts: %{name}-backend +Requires: firewalld + +Provides: plasma-firewall-firewalld = %{version}-%{release} +Conflicts: plasma-firewall-firewalld < %{version}-%{release} + +%description firewalld +This package provides the backend code for Plasma Firewall +to interface with FirewallD. + +%if %{with backend_ufw} +%package ufw +Summary: UFW backend for Plasma Firewall +Requires: %{name}%{?_isa} = %{version}-%{release} +Provides: %{name}-backend = %{version}-%{release} +Conflicts: %{name}-backend +Requires: ufw +# For dbus directories +Requires: dbus-common +# For polkit directories +Requires: polkit + +Provides: plasma-firewall-ufw = %{version}-%{release} +Conflicts: plasma-firewall-ufw < %{version}-%{release} + +%description ufw +This package provides the backend code for Plasma Firewall +to interface with the Uncomplicated Firewall (UFW). +%endif + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 %{!?with_backend_ufw:-DBUILD_UFW_BACKEND=OFF} +%cmake_build + +%install +%cmake_install +%find_lang %{oldname} --all-name --with-html + +%check +appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.metainfo.xml || : +desktop-file-validate %{buildroot}%{_datadir}/applications/kcm_firewall.desktop + +%files -f %{name}.lang +%license LICENSES/*.txt +%{_libdir}/libkcm_firewall_core.so +%{_qt6_plugindir}/plasma/kcms/systemsettings/kcm_firewall.so +%dir %{_qt6_plugindir}/kf6/plasma_firewall +%{_datadir}/applications/kcm_firewall.desktop +%{_metainfodir}/org.kde.plasma.firewall.metainfo.xml + +%files firewalld +%{_qt6_plugindir}/kf6/plasma_firewall/firewalldbackend.so + +%if %{with backend_ufw} +%files ufw +%{_qt6_plugindir}/kf6/plasma_firewall/ufwbackend.so +%{_libexecdir}/kde_ufw_plugin_helper.py +%{_kf6_libexecdir}/kauth/kde_ufw_plugin_helper +%{_datadir}/dbus-1/system-services/org.kde.ufw.service +%{_datadir}/dbus-1/system.d/org.kde.ufw.conf +%dir %{_datadir}/kcm_ufw +%{_datadir}/kcm_ufw/defaults +%{_datadir}/polkit-1/actions/org.kde.ufw.policy +%endif + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-addons-downloader/sonic-frameworks-addons-downloader.spec b/sonic-frameworks-addons-downloader/sonic-frameworks-addons-downloader.spec new file mode 100644 index 0000000..5cadf1f --- /dev/null +++ b/sonic-frameworks-addons-downloader/sonic-frameworks-addons-downloader.spec @@ -0,0 +1,134 @@ +# Generated for SonicDE from Fedora's kf6-knewstuff.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-addons-downloader fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-addons-downloader +# Upstream KDE project: knewstuff +%global oldname kf6-knewstuff + +%global framework knewstuff + +#Name: kf6-%%{framework} +Name: sonic-frameworks-addons-downloader +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 3 module for downloading application assets +License: BSD-2-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-3.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: cmake(KF6Attica) +BuildRequires: cmake(KF6Archive) +BuildRequires: cmake(KF6Package) +BuildRequires: cmake(KF6TextWidgets) +BuildRequires: sonic-rpm-macros +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtdeclarative-devel +BuildRequires: cmake(KF6Completion) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: cmake(KF6ItemViews) +BuildRequires: cmake(KF6Service) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: cmake(Qt6UiPlugin) +BuildRequires: cmake(KF6Kirigami2) +BuildRequires: cmake(KF6Syndication) +BuildRequires: pkgconfig(xkbcommon) +Requires: kf6-filesystem + +Provides: kf6-knewstuff = %{version}-%{release} +Conflicts: kf6-knewstuff < %{version}-%{release} + +%description +KDE Frameworks 6 Tier 3 module for downloading and sharing additional +application data like plugins, themes, motives, etc. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: cmake(KF6Attica) +Requires: cmake(KF6Service) +Requires: cmake(KF6XmlGui) +Requires: qt6-qtbase-devel +Provides: kf6-knewstuff-devel = %{version}-%{release} +Conflicts: kf6-knewstuff-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-knewstuff-doc = %{version}-%{release} +Conflicts: kf6-knewstuff-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-knewstuff-html = %{version}-%{release} +Conflicts: kf6-knewstuff-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang %{oldname} --all-name + +%files -f %{name}.lang +%dir %{_kf6_qmldir}/org/ +%dir %{_kf6_qmldir}/org/kde +%doc README.md +%license LICENSES/*.txt +%{_kf6_bindir}/knewstuff* +%{_kf6_datadir}/applications/org.kde.knewstuff-dialog6.desktop +%{_kf6_datadir}/qlogging-categories6/%{framework}* +%{_kf6_libdir}/libKF6NewStuffCore.so.* +%{_kf6_libdir}/libKF6NewStuffWidgets.so.* +%{_kf6_qmldir}/org/kde/newstuff/ + +%files devel +%{_kf6_includedir}/KNewStuff +%{_kf6_includedir}/KNewStuffCore +%{_kf6_includedir}/KNewStuffWidgets +%{_kf6_libdir}/cmake/KF6NewStuff/ +%{_kf6_libdir}/cmake/KF6NewStuffCore/ +%{_kf6_libdir}/libKF6NewStuffCore.so +%{_kf6_libdir}/libKF6NewStuffWidgets.so +%{_kf6_libdir}/qt6/plugins/designer/knewstuff6widgets.so +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-app-info/sonic-frameworks-app-info.spec b/sonic-frameworks-app-info/sonic-frameworks-app-info.spec new file mode 100644 index 0000000..ad96e39 --- /dev/null +++ b/sonic-frameworks-app-info/sonic-frameworks-app-info.spec @@ -0,0 +1,123 @@ +# Generated for SonicDE from Fedora's kf6-kservice.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-app-info fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-app-info +# Upstream KDE project: kservice +%global oldname kf6-kservice + +%global framework kservice + +#Name: kf6-%%{framework} +Name: sonic-frameworks-app-info +Summary: KDE Frameworks 6 Tier 3 solution for advanced plugin and service introspection +Version: 6.29.0 +Release: 1%{?dist} + +# The following licenses are in the LICENSES folder but go unused: GPL-2.0-only, GPL-2.0-or-later, GPL-3.0-only, LicenseRef-KDE-Accepted-GPL +License: CC0-1.0 AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-3.0-only AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6Crash) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6DocTools) +BuildRequires: cmake(KF6I18n) +BuildRequires: sonic-rpm-macros +BuildRequires: qt6-qtbase-devel + +# for the Administration category +# Recommends: redhat-menus + +Requires: kf6-filesystem + +Provides: kf6-kservice = %{version}-%{release} +Conflicts: kf6-kservice < %{version}-%{release} + +%description +KDE Frameworks 6 Tier 3 solution for advanced plugin and service +introspection. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: cmake(KF6Config) +Requires: cmake(KF6CoreAddons) +Provides: kf6-kservice-devel = %{version}-%{release} +Conflicts: kf6-kservice-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kservice-doc = %{version}-%{release} +Conflicts: kf6-kservice-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kservice-html = %{version}-%{release} +Conflicts: kf6-kservice-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang %{oldname} --all-name --with-man +mkdir -p %{buildroot}%{_kf6_datadir}/kservices6 +mkdir -p %{buildroot}%{_kf6_datadir}/kservicetypes6 + +%files -f %{name}.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/%{framework}.* +%{_kf6_bindir}/kbuildsycoca6 +%{_kf6_libdir}/libKF6Service.so.6 +%{_kf6_libdir}/libKF6Service.so.%{version} +%{_kf6_datadir}/kservicetypes6/ +%{_kf6_datadir}/kservices6/ +%{_kf6_mandir}/man8/kbuildsycoca6.8.gz + +%files devel +%{_kf6_includedir}/KService/ +%{_kf6_libdir}/libKF6Service.so +%{_kf6_libdir}/cmake/KF6Service/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-archive/sonic-frameworks-archive.spec b/sonic-frameworks-archive/sonic-frameworks-archive.spec new file mode 100644 index 0000000..3322392 --- /dev/null +++ b/sonic-frameworks-archive/sonic-frameworks-archive.spec @@ -0,0 +1,121 @@ +# Generated for SonicDE from Fedora's kf6-karchive.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-archive fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-archive +# Upstream KDE project: karchive +%global oldname kf6-karchive + +%global framework karchive + +#Name: kf6-%%{framework} +Name: sonic-frameworks-archive +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 1 addon with archive functions +License: LGPL-2.0-or-later AND BSD-2-Clause +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: http://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: http://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +# Compile Tools +BuildRequires: cmake +BuildRequires: gcc-c++ + +# Fedora +Requires: kf6-filesystem +BuildRequires: sonic-rpm-macros + +# KDE Frameworks +BuildRequires: sonic-frameworks-cmake-modules + +# Qt +BuildRequires: cmake(Qt6Core) + +# Compression +BuildRequires: pkgconfig(libzstd) +BuildRequires: bzip2-devel +BuildRequires: xz-devel +BuildRequires: zlib-devel + +# Others +BuildRequires: pkgconfig(openssl) + +Provides: kf6-karchive = %{version}-%{release} +Conflicts: kf6-karchive < %{version}-%{release} + +%description +KDE Frameworks 6 Tier 1 addon with archive functions. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: qt6-qtbase-devel +Provides: kf6-karchive-devel = %{version}-%{release} +Conflicts: kf6-karchive-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-karchive-doc = %{version}-%{release} +Conflicts: kf6-karchive-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-karchive-html = %{version}-%{release} +Conflicts: kf6-karchive-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 +%find_lang_kf6 karchive6_qt +# Seems one of the arches generate an extra file. Neal said to delete it, at least for now +# It is being built on all arches, except s390x and i686. +rm -f %{buildroot}%{_qt6_docdir}/karchive/karchivedirectory-obsolete.html + +%files -f karchive6_qt.lang +%doc AUTHORS README.md +%license LICENSES/* +%{_kf6_datadir}/qlogging-categories6/*categories +%{_kf6_libdir}/libKF6Archive.so.6 +%{_kf6_libdir}/libKF6Archive.so.%{version} + +%files devel +%{_kf6_includedir}/KArchive/ +%{_kf6_libdir}/cmake/KF6Archive/ +%{_kf6_libdir}/libKF6Archive.so +%{_kf6_libdir}/pkgconfig/* +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-auth/sonic-frameworks-auth.spec b/sonic-frameworks-auth/sonic-frameworks-auth.spec new file mode 100644 index 0000000..2fba845 --- /dev/null +++ b/sonic-frameworks-auth/sonic-frameworks-auth.spec @@ -0,0 +1,115 @@ +# Generated for SonicDE from Fedora's kf6-kauth.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-auth fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-auth +# Upstream KDE project: kauth +%global oldname kf6-kauth + +%global framework kauth + +#Name: kf6-%%{framework} +Name: sonic-frameworks-auth +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 module to perform actions as privileged user +# LGPL-2.0-or-later is also in the project's LICENSES, but is unused according to reuse. +License: BSD-3-Clause AND CC0-1.0 AND LGPL-2.1-or-later +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: sonic-rpm-macros +BuildRequires: polkit-qt6-1-devel +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qttools-devel +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6WindowSystem) + +Requires: kf6-filesystem + +Provides: kf6-kauth = %{version}-%{release} +Conflicts: kf6-kauth < %{version}-%{release} + +%description +%{summary}. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: cmake(KF6CoreAddons) +Provides: kf6-kauth-devel = %{version}-%{release} +Conflicts: kf6-kauth-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kauth-doc = %{version}-%{release} +Conflicts: kf6-kauth-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kauth-html = %{version}-%{release} +Conflicts: kf6-kauth-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang_kf6 kauth6_qt + +%files -f kauth6_qt.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/dbus-1/system.d/org.kde.kf6auth.conf +%{_kf6_datadir}/kf6/kauth/ +%{_kf6_datadir}/qlogging-categories6/%{framework}.* +%{_kf6_libdir}/libKF6AuthCore.so.6 +%{_kf6_libdir}/libKF6AuthCore.so.%{version} +%{_kf6_qtplugindir}/kf6/kauth/ + +%files devel +%{_kf6_includedir}/KAuth/ +%{_kf6_includedir}/KAuthCore/ +%{_kf6_libdir}/cmake/KF6Auth/ +%{_kf6_libdir}/libKF6AuthCore.so +%{_kf6_libexecdir}/kauth/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-autocomplete/sonic-frameworks-autocomplete.spec b/sonic-frameworks-autocomplete/sonic-frameworks-autocomplete.spec new file mode 100644 index 0000000..ef6c3a7 --- /dev/null +++ b/sonic-frameworks-autocomplete/sonic-frameworks-autocomplete.spec @@ -0,0 +1,108 @@ +# Generated for SonicDE from Fedora's kf6-kcompletion.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-autocomplete fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-autocomplete +# Upstream KDE project: kcompletion +%global oldname kf6-kcompletion + +%global framework kcompletion + +#Name: kf6-%%{framework} +Name: sonic-frameworks-autocomplete +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 2 addon with auto completion widgets and classes +# BSD-3-Clause is in the LICENSES folder but goes unused. +License: CC0-1.0 AND LGPL-2.0-or-later AND LGPL-2.1-or-later +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(Qt6Widgets) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: cmake(KF6Codecs) + +Provides: kf6-kcompletion = %{version}-%{release} +Conflicts: kf6-kcompletion < %{version}-%{release} + +%description +KCompletion provides widgets with advanced completion support as well as a +lower-level completion class which can be used with your own widgets. + + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: pkgconfig(Qt6Widgets) +Provides: kf6-kcompletion-devel = %{version}-%{release} +Conflicts: kf6-kcompletion-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kcompletion-doc = %{version}-%{release} +Conflicts: kf6-kcompletion-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kcompletion-html = %{version}-%{release} +Conflicts: kf6-kcompletion-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang_kf6 kcompletion6_qt + +%files -f kcompletion6_qt.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_libdir}/libKF6Completion.so.* +%{_kf6_datadir}/qlogging-categories6/%{framework}.* + +%files devel +%{_kf6_includedir}/KCompletion/ +%{_kf6_libdir}/libKF6Completion.so +%{_kf6_libdir}/cmake/KF6Completion/ +%{_kf6_qtplugindir}/designer/kcompletion6widgets.so +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-barcode/sonic-frameworks-barcode.spec b/sonic-frameworks-barcode/sonic-frameworks-barcode.spec new file mode 100644 index 0000000..da42376 --- /dev/null +++ b/sonic-frameworks-barcode/sonic-frameworks-barcode.spec @@ -0,0 +1,111 @@ +# Generated for SonicDE from Fedora's kf6-prison.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-barcode fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-barcode +# Upstream KDE project: prison +%global oldname kf6-prison + +%define framework prison + +#Name: kf6-%%{framework} +Name: sonic-frameworks-barcode +Summary: KDE Frameworks 6 Tier 1 barcode library +Version: 6.29.0 +Release: 1%{?dist} +License: BSD-3-Clause AND CC0-1.0 AND MIT +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: sonic-rpm-macros +BuildRequires: pkgconfig(Qt6Gui) +BuildRequires: pkgconfig(Qt6Quick) +BuildRequires: pkgconfig(Qt6Multimedia) +BuildRequires: cmake(ZXing) +BuildRequires: pkgconfig(libdmtx) +BuildRequires: pkgconfig(libqrencode) + +Requires: kf6-filesystem + +Provides: kf6-prison = %{version}-%{release} +Conflicts: kf6-prison < %{version}-%{release} + +%description +Prison is a Qt-based barcode abstraction layer/library that provides +an uniform access to generation of barcodes with data. + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Provides: kf6-prison-devel = %{version}-%{release} +Conflicts: kf6-prison-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-prison-doc = %{version}-%{release} +Conflicts: kf6-prison-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-prison-html = %{version}-%{release} +Conflicts: kf6-prison-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%files +%doc README* +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/%{framework}.* +%{_kf6_libdir}/libKF6Prison.so.6 +%{_kf6_libdir}/libKF6Prison.so.%{version} +%{_kf6_libdir}/libKF6PrisonScanner.so.6 +%{_kf6_libdir}/libKF6PrisonScanner.so.%{version} +%{_qt6_qmldir}/org/kde/prison/ + +%files devel +%{_kf6_includedir}/Prison/ +%{_kf6_includedir}/PrisonScanner/ +%{_kf6_libdir}/libKF6Prison.so +%{_kf6_libdir}/libKF6PrisonScanner.so +%{_kf6_libdir}/cmake/KF6Prison/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-bluetooth/sonic-frameworks-bluetooth.spec b/sonic-frameworks-bluetooth/sonic-frameworks-bluetooth.spec new file mode 100644 index 0000000..b197f4c --- /dev/null +++ b/sonic-frameworks-bluetooth/sonic-frameworks-bluetooth.spec @@ -0,0 +1,111 @@ +# Generated for SonicDE from Fedora's kf6-bluez-qt.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-bluetooth fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-bluetooth +# Upstream KDE project: bluez-qt +%global oldname kf6-bluez-qt + +%global framework bluez-qt + +#Name: kf6-%%{framework} +Name: sonic-frameworks-bluetooth +Summary: A Qt wrapper for Bluez +Version: 6.29.0 +Release: 1%{?dist} + +License: CC0-1.0 AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +%global versiondir %(echo %{version} | cut -d. -f1-2) +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: sonic-rpm-macros +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtdeclarative-devel +BuildRequires: gcc-c++ +BuildRequires: cmake + +# For %%{_udevrulesdir} +BuildRequires: systemd + +Requires: kf6-filesystem >= %{version} +Recommends: bluez >= 5 + +Provides: kf6-bluez-qt = %{version}-%{release} +Conflicts: kf6-bluez-qt < %{version}-%{release} + +%description +BluezQt is Qt-based library written handle all Bluetooth functionality. + +%package devel +Summary: Development files for %{name} + +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: qt6-qtbase-devel +Provides: kf6-bluez-qt-devel = %{version}-%{release} +Conflicts: kf6-bluez-qt-devel < %{version}-%{release} + +%description devel +Development files for %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-bluez-qt-doc = %{version}-%{release} +Conflicts: kf6-bluez-qt-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-bluez-qt-html = %{version}-%{release} +Conflicts: kf6-bluez-qt-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build + %{cmake_kf6} \ + -DUDEV_RULES_INSTALL_DIR:PATH="%{_udevrulesdir}" +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%files +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/*categories +%{_libdir}/libKF6BluezQt.so.* +%{_kf6_qmldir}/org/kde/bluezqt/ + +%files devel +%{_kf6_includedir}/BluezQt/ +%{_kf6_libdir}/libKF6BluezQt.so +%{_kf6_libdir}/cmake/KF6BluezQt/ +%{_kf6_libdir}/pkgconfig/KF6BluezQt.pc +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-bookmarks/sonic-frameworks-bookmarks.spec b/sonic-frameworks-bookmarks/sonic-frameworks-bookmarks.spec new file mode 100644 index 0000000..6ff3641 --- /dev/null +++ b/sonic-frameworks-bookmarks/sonic-frameworks-bookmarks.spec @@ -0,0 +1,120 @@ +# Generated for SonicDE from Fedora's kf6-kbookmarks.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-bookmarks fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-bookmarks +# Upstream KDE project: kbookmarks +%global oldname kf6-kbookmarks + +%global framework kbookmarks + +#Name: kf6-%%{framework} +Name: sonic-frameworks-bookmarks +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 3 addon for bookmarks manipulation +License: CC0-1.0 AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-3.0-only AND LicenseRef-KDE-Accepted-LGPL +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(KF6Codecs) +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qttools-devel + +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6ConfigWidgets) +BuildRequires: cmake(KF6ColorScheme) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: cmake(KF6XmlGui) + +Requires: kf6-filesystem + +Provides: kf6-kbookmarks = %{version}-%{release} +Conflicts: kf6-kbookmarks < %{version}-%{release} + +%description +KBookmarks lets you access and manipulate bookmarks stored using the +XBEL format. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: qt6-qtbase-devel +Requires: cmake(KF6WidgetsAddons) +Provides: kf6-kbookmarks-devel = %{version}-%{release} +Conflicts: kf6-kbookmarks-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kbookmarks-doc = %{version}-%{release} +Conflicts: kf6-kbookmarks-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kbookmarks-html = %{version}-%{release} +Conflicts: kf6-kbookmarks-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang_kf6 kbookmarks6_qt + +%files -f kbookmarks6_qt.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/%{framework}.* +%{_kf6_libdir}/libKF6Bookmarks.so.* +%{_kf6_libdir}/libKF6BookmarksWidgets.so.6 +%{_kf6_libdir}/libKF6BookmarksWidgets.so.%{version} +%{_kf6_libdir}/libKF6BookmarksWidgets.so.%{version} +%{_kf6_datadir}/qlogging-categories6/%{framework}widgets.categories + +%files devel +%{_kf6_includedir}/KBookmarks/ +%{_kf6_libdir}/libKF6Bookmarks.so +%{_kf6_libdir}/cmake/KF6Bookmarks/ +%{_kf6_includedir}/KBookmarksWidgets/ +%{_kf6_libdir}/libKF6BookmarksWidgets.so +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-cmake-modules/0001-Revert-Add-PYTHONPATH-to-prefix.sh-if-python-is-avai.patch b/sonic-frameworks-cmake-modules/0001-Revert-Add-PYTHONPATH-to-prefix.sh-if-python-is-avai.patch new file mode 100644 index 0000000..17018a7 --- /dev/null +++ b/sonic-frameworks-cmake-modules/0001-Revert-Add-PYTHONPATH-to-prefix.sh-if-python-is-avai.patch @@ -0,0 +1,55 @@ +From 79802fdb938ac3b3c6fc0b57eb2fcbf60100e0b0 Mon Sep 17 00:00:00 2001 +From: Steve Cossette +Date: Wed, 13 May 2026 21:47:52 -0400 +Subject: [PATCH] Revert "Add PYTHONPATH to prefix.sh if python is available" + +This reverts commit e46088158e5631417602322ecdc08cc692192134. +--- + kde-modules/KDESetupPrefixScript.cmake | 9 --------- + kde-modules/prefix.sh.cmake | 2 -- + kde-modules/prefix.sh.fish.cmake | 2 -- + 3 files changed, 13 deletions(-) + +diff --git a/kde-modules/KDESetupPrefixScript.cmake b/kde-modules/KDESetupPrefixScript.cmake +index a1cc261a..b2bae93b 100644 +--- a/kde-modules/KDESetupPrefixScript.cmake ++++ b/kde-modules/KDESetupPrefixScript.cmake +@@ -15,15 +15,6 @@ if (CMAKE_CROSSCOMPILING) + return() + endif() + +-find_package(Python3 COMPONENTS Interpreter) +-if (Python3_EXECUTABLE) +- execute_process(COMMAND ${Python3_EXECUTABLE} -Esc "import sysconfig; print(sysconfig.get_path('platlib', vars={'platbase': '${CMAKE_INSTALL_PREFIX}', 'base': '${CMAKE_INSTALL_PREFIX}'}))" OUTPUT_VARIABLE sysconfig_output) +- string(STRIP ${sysconfig_output} PYTHON_INSTALL_DIR) +- +- set(SH_EXPORT_PYTHONPATH "export PYTHONPATH=\"${PYTHON_INSTALL_DIR}\":$PYTHONPATH") +- set(FISH_EXPORT_PYTHONPATH "set -x --path PYTHONPATH \"${PYTHON_INSTALL_DIR}\" $PYTHONPATH") +-endif() +- + configure_file(${CMAKE_CURRENT_LIST_DIR}/prefix.sh.cmake ${CMAKE_CURRENT_BINARY_DIR}/prefix.sh @ONLY) + + find_program(FISH_EXECUTABLE fish) +diff --git a/kde-modules/prefix.sh.cmake b/kde-modules/prefix.sh.cmake +index 2d75471a..43b41e9f 100644 +--- a/kde-modules/prefix.sh.cmake ++++ b/kde-modules/prefix.sh.cmake +@@ -14,5 +14,3 @@ export QT_QUICK_CONTROLS_STYLE_PATH=@KDE_INSTALL_FULL_QMLDIR@/QtQuick/Controls.2 + export MANPATH=@KDE_INSTALL_FULL_DATADIR@/man:${MANPATH:-/usr/local/share/man:/usr/share/man} + + export SASL_PATH=@KDE_INSTALL_FULL_LIBDIR@/sasl2:${SASL_PATH:-/usr/@CMAKE_INSTALL_LIBDIR@/sasl2} +- +-@SH_EXPORT_PYTHONPATH@ +diff --git a/kde-modules/prefix.sh.fish.cmake b/kde-modules/prefix.sh.fish.cmake +index 3cb4c4a0..d59c1b87 100644 +--- a/kde-modules/prefix.sh.fish.cmake ++++ b/kde-modules/prefix.sh.fish.cmake +@@ -20,5 +20,3 @@ set -x --path QT_PLUGIN_PATH "@KDE_INSTALL_FULL_QTPLUGINDIR@" $QT_PLUGIN_PATH + set -x --path QML2_IMPORT_PATH "@KDE_INSTALL_FULL_QMLDIR@" $QML2_IMPORT_PATH + + set -x --path QT_QUICK_CONTROLS_STYLE_PATH "@KDE_INSTALL_FULL_QMLDIR@/QtQuick/Controls.2/" $QT_QUICK_CONTROLS_STYLE_PATH +- +-@FISH_EXPORT_PYTHONPATH@ +-- +2.54.0 + diff --git a/sonic-frameworks-cmake-modules/extra-cmake-modules-5.39.0-poppler_overlinking.patch b/sonic-frameworks-cmake-modules/extra-cmake-modules-5.39.0-poppler_overlinking.patch new file mode 100644 index 0000000..4d895ed --- /dev/null +++ b/sonic-frameworks-cmake-modules/extra-cmake-modules-5.39.0-poppler_overlinking.patch @@ -0,0 +1,12 @@ +diff -up extra-cmake-modules-5.39.0/find-modules/FindPoppler.cmake.poppler_overlinking extra-cmake-modules-5.39.0/find-modules/FindPoppler.cmake +--- extra-cmake-modules-5.39.0/find-modules/FindPoppler.cmake.poppler_overlinking 2017-09-09 07:07:55.000000000 -0500 ++++ extra-cmake-modules-5.39.0/find-modules/FindPoppler.cmake 2017-11-06 14:26:33.473536485 -0600 +@@ -85,7 +85,7 @@ set(Poppler_known_components + ) + foreach(_comp ${Poppler_known_components}) + string(TOLOWER "${_comp}" _lc_comp) +- set(Poppler_${_comp}_component_deps "Core") ++ #set(Poppler_${_comp}_component_deps "Core") + set(Poppler_${_comp}_pkg_config "poppler-${_lc_comp}") + set(Poppler_${_comp}_lib "poppler-${_lc_comp}") + set(Poppler_${_comp}_header_subdir "poppler/${_lc_comp}") diff --git a/sonic-frameworks-cmake-modules/sonic-frameworks-cmake-modules.spec b/sonic-frameworks-cmake-modules/sonic-frameworks-cmake-modules.spec new file mode 100644 index 0000000..26e9f17 --- /dev/null +++ b/sonic-frameworks-cmake-modules/sonic-frameworks-cmake-modules.spec @@ -0,0 +1,109 @@ +# Generated for SonicDE from Fedora's extra-cmake-modules.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-cmake-modules fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-cmake-modules +# Upstream KDE project: extra-cmake-modules +%global oldname extra-cmake-modules + +%global framework extra-cmake-modules + +# uncomment to enable bootstrap mode +#global bootstrap 1 + +%if !0%{?bootstrap} +%global tests 1 +%endif + +#Name: extra-cmake-modules +Name: sonic-frameworks-cmake-modules +Summary: Additional modules for CMake build system +Version: 6.29.0 +Release: 1%{?dist} +# kde-modules/clang-format.cmake is MIT +License: BSD-3-Clause AND BSD-2-Clause AND MIT +#URL: https://api.kde.org/ecm/ +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: http://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: http://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig +BuildArch: noarch + +## upstreamable patches +# do not unconditionally link in base/core libpoppler library +Patch2: extra-cmake-modules-5.39.0-poppler_overlinking.patch + +# test +Patch3: 0001-Revert-Add-PYTHONPATH-to-prefix.sh-if-python-is-avai.patch + +## downstream patches + +BuildRequires: sonic-rpm-macros +BuildRequires: make +# qcollectiongenerator +BuildRequires: qt5-qttools-devel +# sphinx-build +BuildRequires: python3-sphinx +BuildRequires: python3-sphinxcontrib-qthelp +%global sphinx_build -DSphinx_BUILD_EXECUTABLE:PATH=%{_bindir}/sphinx-build-3 + +# Qt5Core is needed for tests to run properly (As-of 5.246.1). +BuildRequires: pkgconfig(Qt5Core) +BuildRequires: pkgconfig(Qt6Core) +%if 0%{?fedora} || 0%{?rhel} < 10 +Requires: (kf5-rpm-macros if qt5-qtbase-devel) +%endif +Requires: (sonic-rpm-macros if qt6-qtbase-devel) +Recommends: appstream + +Provides: extra-cmake-modules = %{version}-%{release} +Conflicts: extra-cmake-modules < %{version}-%{release} + +%description +Additional modules for CMake build system needed by KDE Frameworks. + +%package doc +Summary: Developer Documentation files for %{name} +Provides: extra-cmake-modules-doc = %{version}-%{release} +Conflicts: extra-cmake-modules-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 \ + -DBUILD_MAN_DOCS:BOOL=OFF \ + -DBUILD_HTML_DOCS:BOOL=OFF \ + -DBUILD_QTHELP_DOCS:BOOL=ON \ + -DBUILD_TESTING:BOOL=%{?tests:ON}%{!?tests:OFF} \ + %{?sphinx_build} +%cmake_build + +%install +%cmake_install + +# move to qt6 docdir so it shows up in Qt Creator by default +mkdir %{buildroot}%{_qt6_docdir} +mv %{buildroot}%{_kf6_docdir}/ECM/*.qch %{buildroot}%{_qt6_docdir}/ + +%check +%if 0%{?tests} +export CTEST_OUTPUT_ON_FAILURE=1 +make test ARGS="--output-on-failure --timeout 300" -C %{_vpath_builddir} ||: +%endif + +%files +%doc README.rst +%license LICENSES/*.txt +%{_datadir}/ECM/ + +%files doc +%{_qt6_docdir}/*.qch + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-color-scheme/sonic-frameworks-color-scheme.spec b/sonic-frameworks-color-scheme/sonic-frameworks-color-scheme.spec new file mode 100644 index 0000000..6fc78cc --- /dev/null +++ b/sonic-frameworks-color-scheme/sonic-frameworks-color-scheme.spec @@ -0,0 +1,107 @@ +# Generated for SonicDE from Fedora's kf6-kcolorscheme.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-color-scheme fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-color-scheme +# Upstream KDE project: kcolorscheme +%global oldname kf6-kcolorscheme + +%global framework kcolorscheme + +#Name: kf6-%%{framework} +Name: sonic-frameworks-color-scheme +Version: 6.29.0 +Release: 1%{?dist} +Summary: Classes to read and interact with KColorScheme +License: BSD-2-Clause and CC0-1.0 and LGPL-2.0-or-later and LGPL-2.1-only and LGPL-3.0-only and (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(Qt6Qml) +BuildRequires: qt6-qtbase-private-devel +BuildRequires: pkgconfig(xkbcommon) + +Requires: kf6-filesystem + +Provides: kf6-kcolorscheme = %{version}-%{release} +Conflicts: kf6-kcolorscheme < %{version}-%{release} + +%description +%summary. + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Provides: kf6-kcolorscheme-devel = %{version}-%{release} +Conflicts: kf6-kcolorscheme-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kcolorscheme-doc = %{version}-%{release} +Conflicts: kf6-kcolorscheme-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kcolorscheme-html = %{version}-%{release} +Conflicts: kf6-kcolorscheme-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang kcolorscheme6 --all-name + +%files -f kcolorscheme6.lang +%doc README.md +%license LICENSES/* +%{_kf6_datadir}/qlogging-categories6/kcolorscheme.categories +%{_kf6_libdir}/libKF6ColorScheme.so.6 +%{_kf6_libdir}/libKF6ColorScheme.so.%{version} + +%files devel +%{_kf6_includedir}/KColorScheme +%{_kf6_libdir}/cmake/KF6ColorScheme +%{_kf6_libdir}/libKF6ColorScheme.so +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-core-addons/sonic-frameworks-core-addons.spec b/sonic-frameworks-core-addons/sonic-frameworks-core-addons.spec new file mode 100644 index 0000000..f81a7dd --- /dev/null +++ b/sonic-frameworks-core-addons/sonic-frameworks-core-addons.spec @@ -0,0 +1,146 @@ +# Generated for SonicDE from Fedora's kf6-kcoreaddons.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-core-addons fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-core-addons +# Upstream KDE project: kcoreaddons +%global oldname kf6-kcoreaddons + +%global framework kcoreaddons + +#Name: kf6-%%{framework} +Name: sonic-frameworks-core-addons +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 1 addon with various classes on top of QtCore +License: BSD-2-Clause AND BSD-3-Clause AND CC0-1.0 AND GPL-2.0-or-later AND MPL-1.1 AND LGPL-2.0-only AND LGPL-2.1-or-later AND LGPL-3.0-only AND LGPL-2.1-only WITH Qt-LGPL-exception-1.1 +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: make +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(Qt6DBus) +BuildRequires: cmake(Qt6DBusTools) +BuildRequires: cmake(Qt6Qml) +BuildRequires: cmake(Qt6QmlTools) +BuildRequires: cmake(Qt6LinguistTools) +BuildRequires: systemd-devel +BuildRequires: pkgconfig(mount) + +# required for pyside6 python bindings +BuildRequires: python3-devel +BuildRequires: python3-build +BuildRequires: python3-setuptools +BuildRequires: python3-wheel +BuildRequires: clang-devel +BuildRequires: cmake(Shiboken6) +BuildRequires: cmake(PySide6) + +Requires: kf6-filesystem + +Provides: kf6-kcoreaddons = %{version}-%{release} +Conflicts: kf6-kcoreaddons < %{version}-%{release} + +%description +KCoreAddons provides classes built on top of QtCore to perform various tasks +such as manipulating mime types, autosaving files, creating backup files, +generating random sequences, performing text manipulations such as macro +replacement, accessing user information and many more. + +%package -n python3-%{name} +Summary: Qt for Python bindings for %{name} +Provides: python3-kf6-kcoreaddons = %{version}-%{release} +Conflicts: python3-kf6-kcoreaddons < %{version}-%{release} + +%description -n python3-%{name} +The package contains the pyside6 bindings library for %{name} + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Requires: qt6-qtbase-devel +Provides: kf6-kcoreaddons-devel = %{version}-%{release} +Conflicts: kf6-kcoreaddons-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch + +Provides: kf6-kcoreaddons-doc = %{version}-%{release} +Conflicts: kf6-kcoreaddons-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kcoreaddons-html = %{version}-%{release} +Conflicts: kf6-kcoreaddons-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang_kf6 kcoreaddons6_qt +%find_lang_kf6 kde6_xml_mimetypes +cat *.lang > all.lang + +%files -f all.lang +%doc README.md +%{_kf6_datadir}/mime/packages/kde6.xml +%{_kf6_datadir}/qlogging-categories6/%{framework}.* +%{_kf6_libdir}/libKF6CoreAddons.so.* +%{_kf6_libdir}/qt6/qml/org/kde/coreaddons/libkcoreaddonsplugin.so +%{_kf6_libdir}/qt6/qml/org/kde/coreaddons/qmldir +%{_datadir}/kf6/jsonschema/kpluginmetadata.schema.json +%{_libdir}/qt6/qml/org/kde/coreaddons/kcoreaddonsplugin.qmltypes +%{_libdir}/qt6/qml/org/kde/coreaddons/kde-qmlmodule.version + +%files -n python3-%{name} +%{python3_sitearch}/KCoreAddons.cpython-%{python3_version_nodots}*.so + +%files devel +%{_kf6_includedir}/KCoreAddons/ +%dir %{_includedir}/PySide6/KCoreAddons/ +%{_includedir}/PySide6/KCoreAddons/kcoreaddons_python.h +%dir %{_kf6_datadir}/PySide6/typesystems/ +%{_kf6_datadir}/PySide6/typesystems/typesystem_kcoreaddons.xml +%{_kf6_libdir}/cmake/KF6CoreAddons/ +%{_kf6_libdir}/pkgconfig/KF6CoreAddons.pc +%{_kf6_libdir}/libKF6CoreAddons.so +%{_libdir}/qt6/metatypes/qt6kf6coreaddons* +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-crash-handler/sonic-frameworks-crash-handler.spec b/sonic-frameworks-crash-handler/sonic-frameworks-crash-handler.spec new file mode 100644 index 0000000..f2cc68a --- /dev/null +++ b/sonic-frameworks-crash-handler/sonic-frameworks-crash-handler.spec @@ -0,0 +1,106 @@ +# Generated for SonicDE from Fedora's kf6-kcrash.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-crash-handler fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-crash-handler +# Upstream KDE project: kcrash +%global oldname kf6-kcrash + +%global framework kcrash + +#Name: kf6-%%{framework} +Name: sonic-frameworks-crash-handler +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 2 addon for handling application crashes + +License: CC0-1.0 AND LGPL-2.0-or-later +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: sonic-rpm-macros +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: libX11-devel +BuildRequires: qt6-qtbase-devel + +Provides: kf6-kcrash = %{version}-%{release} +Conflicts: kf6-kcrash < %{version}-%{release} + +%description +KCrash provides support for intercepting and handling application crashes. + + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Requires: qt6-qtbase-devel +Provides: kf6-kcrash-devel = %{version}-%{release} +Conflicts: kf6-kcrash-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kcrash-doc = %{version}-%{release} +Conflicts: kf6-kcrash-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kcrash-html = %{version}-%{release} +Conflicts: kf6-kcrash-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%files +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/%{framework}.* +%{_kf6_libdir}/libKF6Crash.so.* + +%files devel +%{_kf6_includedir}/KCrash/ +%{_kf6_libdir}/libKF6Crash.so +%{_kf6_libdir}/cmake/KF6Crash/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-data-models/sonic-frameworks-data-models.spec b/sonic-frameworks-data-models/sonic-frameworks-data-models.spec new file mode 100644 index 0000000..d305a56 --- /dev/null +++ b/sonic-frameworks-data-models/sonic-frameworks-data-models.spec @@ -0,0 +1,107 @@ +# Generated for SonicDE from Fedora's kf6-kitemmodels.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-data-models fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-data-models +# Upstream KDE project: kitemmodels +%global oldname kf6-kitemmodels + +%global framework kitemmodels + +#Name: kf6-%%{framework} +Name: sonic-frameworks-data-models +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 1 addon with item models + +License: CC0-1.0 AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: sonic-rpm-macros +BuildRequires: pkgconfig(Qt6Core) +BuildRequires: pkgconfig(Qt6Qml) + +Requires: kf6-filesystem + +Provides: kf6-kitemmodels = %{version}-%{release} +Conflicts: kf6-kitemmodels < %{version}-%{release} + +%description +KDE Frameworks 6 Tier 1 addon with item models. + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Requires: qt6-qtbase-devel +Provides: kf6-kitemmodels-devel = %{version}-%{release} +Conflicts: kf6-kitemmodels-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kitemmodels-doc = %{version}-%{release} +Conflicts: kf6-kitemmodels-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kitemmodels-html = %{version}-%{release} +Conflicts: kf6-kitemmodels-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%files +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/%{framework}.* +%{_kf6_libdir}/libKF6ItemModels.so.* +%{_kf6_qmldir}/org/kde/kitemmodels/ + +%files devel +%doc README.md +%license LICENSES/*.txt +%{_kf6_includedir}/KItemModels/ +%{_kf6_libdir}/libKF6ItemModels.so +%{_kf6_libdir}/cmake/KF6ItemModels/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-data-views/sonic-frameworks-data-views.spec b/sonic-frameworks-data-views/sonic-frameworks-data-views.spec new file mode 100644 index 0000000..1e80d36 --- /dev/null +++ b/sonic-frameworks-data-views/sonic-frameworks-data-views.spec @@ -0,0 +1,107 @@ +# Generated for SonicDE from Fedora's kf6-kitemviews.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-data-views fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-data-views +# Upstream KDE project: kitemviews +%global oldname kf6-kitemviews + +%global framework kitemviews + +#Name: kf6-%%{framework} +Name: sonic-frameworks-data-views +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 1 addon with item views +License: CC0-1.0 AND GPL-2.0-or-later AND LGPL-2.0-only AND LGPL-2.0-or-later +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: fdupes +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: sonic-rpm-macros +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qttools-devel +BuildRequires: pkgconfig(xkbcommon) + +Requires: kf6-filesystem + +Provides: kf6-kitemviews = %{version}-%{release} +Conflicts: kf6-kitemviews < %{version}-%{release} + +%description +KDE Frameworks 6 Tier 1 addon with item views. + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Requires: qt6-qtbase-devel +Provides: kf6-kitemviews-devel = %{version}-%{release} +Conflicts: kf6-kitemviews-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kitemviews-doc = %{version}-%{release} +Conflicts: kf6-kitemviews-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kitemviews-html = %{version}-%{release} +Conflicts: kf6-kitemviews-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang_kf6 kitemviews6_qt +%fdupes LICENSES + +%files -f kitemviews6_qt.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/*categories +%{_kf6_libdir}/libKF6ItemViews.so.* + +%files devel +%{_kf6_includedir}/KItemViews/ +%{_kf6_libdir}/libKF6ItemViews.so +%{_kf6_libdir}/cmake/KF6ItemViews/ +%{_kf6_qtplugindir}/designer/kitemviews6widgets.so +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-dbus/sonic-frameworks-dbus.spec b/sonic-frameworks-dbus/sonic-frameworks-dbus.spec new file mode 100644 index 0000000..d11edf0 --- /dev/null +++ b/sonic-frameworks-dbus/sonic-frameworks-dbus.spec @@ -0,0 +1,107 @@ +# Generated for SonicDE from Fedora's kf6-kdbusaddons.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-dbus fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-dbus +# Upstream KDE project: kdbusaddons +%global oldname kf6-kdbusaddons + +%global framework kdbusaddons + +#Name: kf6-%%{framework} +Name: sonic-frameworks-dbus +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 1 addon with various classes on top of QtDBus +License: CC0-1.0 AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-3.0-only +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: sonic-rpm-macros +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qttools-devel +BuildRequires: qt6-qtbase-private-devel +BuildRequires: pkgconfig(xkbcommon) + +Requires: kf6-filesystem + +Provides: kf6-kdbusaddons = %{version}-%{release} +Conflicts: kf6-kdbusaddons < %{version}-%{release} + +%description +KDBusAddons provides convenience classes on top of QtDBus, as well as an API to +create KDED modules. + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Requires: qt6-qtbase-devel +Provides: kf6-kdbusaddons-devel = %{version}-%{release} +Conflicts: kf6-kdbusaddons-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kdbusaddons-doc = %{version}-%{release} +Conflicts: kf6-kdbusaddons-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kdbusaddons-html = %{version}-%{release} +Conflicts: kf6-kdbusaddons-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang_kf6 kdbusaddons6_qt + +%files -f kdbusaddons6_qt.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/%{framework}* +%{_kf6_bindir}/kquitapp6 +%{_kf6_libdir}/libKF6DBusAddons.so.* + +%files devel +%{_kf6_includedir}/KDBusAddons/ +%{_kf6_libdir}/libKF6DBusAddons.so +%{_kf6_libdir}/cmake/KF6DBusAddons/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-device-integration/sonic-frameworks-device-integration.spec b/sonic-frameworks-device-integration/sonic-frameworks-device-integration.spec new file mode 100644 index 0000000..e69715e --- /dev/null +++ b/sonic-frameworks-device-integration/sonic-frameworks-device-integration.spec @@ -0,0 +1,120 @@ +# Generated for SonicDE from Fedora's kf6-solid.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-device-integration fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-device-integration +# Upstream KDE project: solid +%global oldname kf6-solid + +%global framework solid + +#Name: kf6-%%{framework} +Name: sonic-frameworks-device-integration +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 1 integration module that provides hardware information +License: LGPL-2.1-or-later AND LGPL-2.1-only AND CCO-1.0 AND BSD-3-Clause AND LGPL-3.0-only +#URL: https://solid.kde.org/ +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: sonic-frameworks-cmake-modules >= %{majmin_ver_kf6} +Requires: kf6-filesystem +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6Qml) +BuildRequires: cmake(Qt6Tools) +BuildRequires: libupnp-devel +BuildRequires: systemd-devel +BuildRequires: libmount-devel +BuildRequires: flex +BuildRequires: bison +BuildRequires: pkgconfig(libplist++-2.0) +BuildRequires: pkgconfig(libimobiledevice-1.0) + +BuildRequires: media-player-info +Recommends: media-player-info +Recommends: udisks2 +Recommends: upower + +Provides: kf6-solid = %{version}-%{release} +Conflicts: kf6-solid < %{version}-%{release} + +%description +Solid provides the following features for application developers: + - Hardware Discovery + - Power Management + - Network Management + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: cmake(Qt6Core) +Provides: kf6-solid-devel = %{version}-%{release} +Conflicts: kf6-solid-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-solid-doc = %{version}-%{release} +Conflicts: kf6-solid-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-solid-html = %{version}-%{release} +Conflicts: kf6-solid-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang_kf6 solid6_qt + +%files -f solid6_qt.lang +%doc README.md TODO +%license LICENSES/*.txt +%{_kf6_bindir}/solid-hardware6 +%{_kf6_datadir}/qlogging-categories6/%{framework}.* +%{_kf6_libdir}/libKF6Solid.so.6 +%{_kf6_libdir}/libKF6Solid.so.%{version} + +%files devel +%{_kf6_includedir}/Solid/ +%{_kf6_libdir}/cmake/KF6Solid/ +%{_kf6_libdir}/libKF6Solid.so +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-doctools/sonic-frameworks-doctools.spec b/sonic-frameworks-doctools/sonic-frameworks-doctools.spec new file mode 100644 index 0000000..88fdcaf --- /dev/null +++ b/sonic-frameworks-doctools/sonic-frameworks-doctools.spec @@ -0,0 +1,119 @@ +# Generated for SonicDE from Fedora's kf6-kdoctools.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-doctools fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-doctools +# Upstream KDE project: kdoctools +%global oldname kf6-kdoctools + +%global framework kdoctools + +#Name: kf6-%%{framework} +Name: sonic-frameworks-doctools +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 2 addon for generating documentation + +License: BSD-3-Clause AND CC0-1.0 AND GPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: docbook-dtds +BuildRequires: docbook-style-xsl +BuildRequires: cmake +BuildRequires: sonic-rpm-macros +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: gcc-c++ +BuildRequires: cmake(KF6Archive) +BuildRequires: cmake(KF6I18n) +BuildRequires: libxml2-devel +BuildRequires: libxslt-devel +BuildRequires: perl-generators +BuildRequires: perl(Any::URI::Escape) +BuildRequires: qt6-qtbase-devel +Requires: docbook-dtds +Requires: docbook-style-xsl + +Provides: kf6-kdoctools = %{version}-%{release} +Conflicts: kf6-kdoctools < %{version}-%{release} + +%description +Provides tools to generate documentation in various format from DocBook files. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Provides: kf6-kdoctools-static = %{version}-%{release} +Requires: qt6-qtbase-devel +Requires: perl(Any::URI::Escape) +Provides: kf6-kdoctools-devel = %{version}-%{release} +Conflicts: kf6-kdoctools-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kdoctools-doc = %{version}-%{release} +Conflicts: kf6-kdoctools-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kdoctools-html = %{version}-%{release} +Conflicts: kf6-kdoctools-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang %{oldname} --all-name --with-man --with-html + +%files -f %{name}.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_libdir}/libKF6DocTools.so.6 +%{_kf6_libdir}/libKF6DocTools.so.%{version} +%{_kf6_bindir}/checkXML6 +%{_kf6_bindir}/meinproc6 +%{_kf6_mandir}/man1/*.1* +%{_kf6_mandir}/man7/*.7* +%{_kf6_datadir}/kf6/kdoctools/ + +%files devel +%{_kf6_includedir}/KDocTools/ +%{_kf6_libdir}/libKF6DocTools.so +%{_kf6_libdir}/cmake/KF6DocTools/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-feeds/sonic-frameworks-feeds.spec b/sonic-frameworks-feeds/sonic-frameworks-feeds.spec new file mode 100644 index 0000000..ebe3295 --- /dev/null +++ b/sonic-frameworks-feeds/sonic-frameworks-feeds.spec @@ -0,0 +1,103 @@ +# Generated for SonicDE from Fedora's kf6-syndication.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-feeds fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-feeds +# Upstream KDE project: syndication +%global oldname kf6-syndication + +%global framework syndication + +#Name: kf6-%%{framework} +Name: sonic-frameworks-feeds +Version: 6.29.0 +Release: 1%{?dist} +Summary: The Syndication Library + +# Qt-Commercial-exception-1.0 is also found in the LICENSES folder, but is unused except for tests which we don't use anyway +License: BSD-2-Clause AND CC0-1.0 AND GPL-2.0-or-later AND LGPL-2.0-or-later +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: gcc-c++ +BuildRequires: cmake(KF6Codecs) +BuildRequires: sonic-rpm-macros +BuildRequires: cmake +BuildRequires: qt6-qtbase-devel + +BuildRequires: cmake(KF6KIO) +Requires: kf6-filesystem + +Provides: kf6-syndication = %{version}-%{release} +Conflicts: kf6-syndication < %{version}-%{release} + +%description +%{summary}. + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Provides: kf6-syndication-devel = %{version}-%{release} +Conflicts: kf6-syndication-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-syndication-doc = %{version}-%{release} +Conflicts: kf6-syndication-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-syndication-html = %{version}-%{release} +Conflicts: kf6-syndication-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%files +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/%{framework}.* +%{_kf6_libdir}/libKF6Syndication.so.* + +%files devel +%{_kf6_includedir}/Syndication/ +%{_kf6_libdir}/cmake/KF6Syndication/ +%{_kf6_libdir}/libKF6Syndication.so +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-file-metadata/sonic-frameworks-file-metadata.spec b/sonic-frameworks-file-metadata/sonic-frameworks-file-metadata.spec new file mode 100644 index 0000000..60b1f20 --- /dev/null +++ b/sonic-frameworks-file-metadata/sonic-frameworks-file-metadata.spec @@ -0,0 +1,126 @@ +# Generated for SonicDE from Fedora's kf6-kfilemetadata.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-file-metadata fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-file-metadata +# Upstream KDE project: kfilemetadata +%global oldname kf6-kfilemetadata + +%global framework kfilemetadata + +#Name: kf6-%%{framework} +Name: sonic-frameworks-file-metadata +Summary: A Tier 2 KDE Framework for extracting file metadata +Version: 6.29.0 +Release: 1%{?dist} + +License: BSD-3-Clause AND CC0-1.0 AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(KF6Archive) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6Codecs) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(QMobipocket6) +BuildRequires: qt6-qtbase-devel +BuildRequires: libattr-devel +BuildRequires: pkgconfig(exiv2) >= 0.20 +# catdoc is dead upstream and will not be in epel10 +# https://bugzilla.redhat.com/show_bug.cgi?id=2313773 +%if %[!(0%{?rhel} >= 10)] +BuildRequires: catdoc +Recommends: catdoc +%endif +BuildRequires: ebook-tools-devel +BuildRequires: ffmpeg-free-devel +BuildRequires: pkgconfig(poppler-qt6) +BuildRequires: pkgconfig(taglib) >= 1.9 +BuildRequires: pkgconfig(xkbcommon) + +Provides: kf6-kfilemetadata = %{version}-%{release} +Conflicts: kf6-kfilemetadata < %{version}-%{release} + +%description +%{summary}. + +%package devel +Summary: Developer files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: qt6-qtbase-devel +Provides: kf6-kfilemetadata-devel = %{version}-%{release} +Conflicts: kf6-kfilemetadata-devel < %{version}-%{release} + +%description devel +%{summary}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kfilemetadata-doc = %{version}-%{release} +Conflicts: kf6-kfilemetadata-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kfilemetadata-html = %{version}-%{release} +Conflicts: kf6-kfilemetadata-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang %{oldname} --all-name +mkdir -p %{buildroot}%{_kf6_plugindir}/kfilemetadata/writers/ + +%files -f %{name}.lang +%license LICENSES/*.txt +%{_kf6_bindir}/kfilemetadata_dump6 +%{_kf6_datadir}/qlogging-categories6/%{framework}* +%{_kf6_libdir}/libKF6FileMetaData.so.* +%dir %{_kf6_plugindir}/kfilemetadata/ +%{_kf6_plugindir}/kfilemetadata/kfilemetadata_*.so +%dir %{_kf6_plugindir}/kfilemetadata/writers/ +%{_kf6_plugindir}/kfilemetadata/writers/kfilemetadata_taglibwriter.so + +%files devel +%{_kf6_libdir}/libKF6FileMetaData.so +%{_kf6_libdir}/cmake/KF6FileMetaData +%{_kf6_includedir}/KFileMetaData/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-file-search/baloo-5.67.0-baloofile_config.patch b/sonic-frameworks-file-search/baloo-5.67.0-baloofile_config.patch new file mode 100644 index 0000000..6781bc7 --- /dev/null +++ b/sonic-frameworks-file-search/baloo-5.67.0-baloofile_config.patch @@ -0,0 +1,21 @@ +diff -ur baloo-5.67.0/src/lib/baloosettings.kcfg baloo-5.67.0-baloofile_config/src/lib/baloosettings.kcfg +--- baloo-5.67.0/src/lib/baloosettings.kcfg 2020-02-02 13:42:43.000000000 +0100 ++++ baloo-5.67.0-baloofile_config/src/lib/baloosettings.kcfg 2020-02-03 22:19:59.824381582 +0100 +@@ -31,11 +31,15 @@ + + + +- QStringList() ++ QStringList() << QDir::homePath() + + + +- QStringList() << QDir::homePath() ++ QStringList() << ++ QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation) << ++ QStandardPaths::standardLocations(QStandardPaths::MusicLocation) << ++ QStandardPaths::standardLocations(QStandardPaths::MoviesLocation) << ++ QStandardPaths::standardLocations(QStandardPaths::PicturesLocation) + + + diff --git a/sonic-frameworks-file-search/sonic-frameworks-file-search.spec b/sonic-frameworks-file-search/sonic-frameworks-file-search.spec new file mode 100644 index 0000000..faaff3d --- /dev/null +++ b/sonic-frameworks-file-search/sonic-frameworks-file-search.spec @@ -0,0 +1,185 @@ +# Generated for SonicDE from Fedora's kf6-baloo.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-file-search fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-file-search +# Upstream KDE project: baloo +%global oldname kf6-baloo + +%global framework baloo + +#Name: kf6-%%{framework} +Name: sonic-frameworks-file-search +Summary: A Tier 3 KDE Frameworks 6 module that provides indexing and search functionality +Version: 6.29.0 +Release: 1%{?dist} + +License: BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) AND bzip2-1.0.6 +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +# Upstream Patches + +## upstreamable patches +# http://bugzilla.redhat.com/1235026 +Patch100: baloo-5.67.0-baloofile_config.patch + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6Crash) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6FileMetaData) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6IdleTime) +BuildRequires: cmake(KF6KIO) +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(KF6Solid) + +BuildRequires: lmdb-devel +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtdeclarative-devel + +# for systemd-related macros +BuildRequires: systemd + +Provides: kf6-baloo = %{version}-%{release} +Conflicts: kf6-baloo < %{version}-%{release} + +%description +%{summary}. + +%package devel +Summary: Development files for %{name} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: cmake(KF6CoreAddons) +Requires: cmake(KF6FileMetaData) +Requires: qt6-qtbase-devel + +Provides: kf6-baloo-devel = %{version}-%{release} +Conflicts: kf6-baloo-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package file +Summary: File indexing and search for Baloo +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Obsoletes: kf5-baloo-file < 6 +Provides: kf6-baloo-file = %{version}-%{release} +Conflicts: kf6-baloo-file < %{version}-%{release} + +%description file +%{summary}. + +%package libs +Summary: Runtime libraries for %{name} +Provides: kf6-baloo-libs = %{version}-%{release} +Conflicts: kf6-baloo-libs < %{version}-%{release} + +%description libs +%{summary}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-baloo-doc = %{version}-%{release} +Conflicts: kf6-baloo-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-baloo-html = %{version}-%{release} +Conflicts: kf6-baloo-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 -DKDE_INSTALL_SYSTEMDUSERUNITDIR=%{_userunitdir} +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +# baloodb not installed unless BUILD_EXPERIMENTAL is enabled, so omit translations +#rm -fv %%{buildroot}%%{_datadir}/locale/*/LC_MESSAGES/baloodb5.* + +%find_lang baloodb6 +%find_lang baloo_file6 +%find_lang baloo_file_extractor6 +%find_lang balooctl6 +%find_lang balooengine6 +%find_lang baloosearch6 +%find_lang balooshow6 +%find_lang kio6_baloosearch +%find_lang kio6_tags +%find_lang kio6_timeline + +cat kio6_tags.lang kio6_baloosearch.lang kio6_timeline.lang \ + balooctl6.lang balooengine6.lang baloosearch6.lang \ + balooshow6.lang baloodb6.lang \ + > %{oldname}.lang + +cat baloo_file6.lang baloo_file_extractor6.lang \ + > %{oldname}-file.lang + +%files -f %{name}.lang +%license LICENSES/*.txt +%{_kf6_bindir}/baloosearch6 +%{_kf6_bindir}/balooshow6 +%{_kf6_bindir}/balooctl6 +%{_kf6_datadir}/qlogging-categories6/%{framework}* +%{_kf6_datadir}/config.kcfg/baloosettings.kcfg + +%files file -f %{name}-file.lang +%config(noreplace) %{_kf6_sysconfdir}/xdg/autostart/baloo_file.desktop +%{_userunitdir}/kde-baloo.service +%{_libexecdir}/kf6/baloo_file +%{_libexecdir}/kf6/baloo_file_extractor + +%files libs +%license LICENSES/* +%{_kf6_libdir}/libKF6Baloo.so.* +%{_kf6_libdir}/libKF6BalooEngine.so.* +%{_kf6_plugindir}/kio/baloosearch.so +%{_kf6_plugindir}/kio/tags.so +%{_kf6_plugindir}/kio/timeline.so +%{_kf6_plugindir}/kded/baloosearchmodule.so +%{_kf6_qmldir}/org/kde/baloo + +%files devel +%{_kf6_libdir}/libKF6Baloo.so +%{_kf6_libdir}/cmake/KF6Baloo/ +%{_kf6_libdir}/pkgconfig/KF6Baloo.pc +%{_kf6_includedir}/Baloo/ +%{_kf6_datadir}/dbus-1/interfaces/org.kde.baloo.*.xml +%{_kf6_datadir}/dbus-1/interfaces/org.kde.Baloo*.xml +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-gui-addons/sonic-frameworks-gui-addons.spec b/sonic-frameworks-gui-addons/sonic-frameworks-gui-addons.spec new file mode 100644 index 0000000..e3904e4 --- /dev/null +++ b/sonic-frameworks-gui-addons/sonic-frameworks-gui-addons.spec @@ -0,0 +1,138 @@ +# Generated for SonicDE from Fedora's kf6-kguiaddons.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-gui-addons fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-gui-addons +# Upstream KDE project: kguiaddons +%global oldname kf6-kguiaddons + +%global framework kguiaddons + +#Name: kf6-%%{framework} +Name: sonic-frameworks-gui-addons +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 1 addon with various classes on top of QtGui + +License: BSD-2-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-3.0-only +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: libX11-devel +BuildRequires: libxcb-devel +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(PlasmaWaylandProtocols) +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6GuiPrivate) +BuildRequires: pkgconfig(wayland-protocols) + +BuildRequires: cmake(Qt6WaylandClient) + +BuildRequires: pkgconfig(wayland-client) +BuildRequires: pkgconfig(xkbcommon) + +# required for pyside6 python bindings +BuildRequires: python3-devel +BuildRequires: python3-build +BuildRequires: python3-setuptools +BuildRequires: python3-wheel +BuildRequires: clang-devel +BuildRequires: cmake(Shiboken6) +BuildRequires: cmake(PySide6) + +Requires: kf6-filesystem + +Provides: kf6-kguiaddons = %{version}-%{release} +Conflicts: kf6-kguiaddons < %{version}-%{release} + +%description +%{summary}. + +%package -n python3-%{name} +Summary: Qt for Python bindings for %{name} +Provides: python3-kf6-kguiaddons = %{version}-%{release} +Conflicts: python3-kf6-kguiaddons < %{version}-%{release} + +%description -n python3-%{name} +The package contains the pyside6 bindings library for %{name} + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Requires: qt6-qtbase-devel + +Provides: kf6-kguiaddons-devel = %{version}-%{release} +Conflicts: kf6-kguiaddons-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kguiaddons-doc = %{version}-%{release} +Conflicts: kf6-kguiaddons-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kguiaddons-html = %{version}-%{release} +Conflicts: kf6-kguiaddons-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%files +%doc README.md +%license LICENSES/*.txt +%{_kf6_bindir}/kde-geo-uri-handler +%{_kf6_datadir}/qlogging-categories6/*categories +%{_kf6_libdir}/libKF6GuiAddons.so.* +%{_kf6_datadir}/applications/*-handler.desktop +%{_kf6_qmldir}/org/kde/guiaddons/ + +%files -n python3-%{name} +%{python3_sitearch}/KGuiAddons.cpython-%{python3_version_nodots}*.so + +%files devel +%{_kf6_includedir}/KGuiAddons/ +%{_kf6_libdir}/libKF6GuiAddons.so +%{_kf6_libdir}/cmake/KF6GuiAddons/ +%{_kf6_libdir}/pkgconfig/KF6GuiAddons.pc +%{_libdir}/qt6/metatypes/qt6kf6guiaddons*.json +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-holidays/sonic-frameworks-holidays.spec b/sonic-frameworks-holidays/sonic-frameworks-holidays.spec new file mode 100644 index 0000000..22a6db3 --- /dev/null +++ b/sonic-frameworks-holidays/sonic-frameworks-holidays.spec @@ -0,0 +1,108 @@ +# Generated for SonicDE from Fedora's kf6-kholidays.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-holidays fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-holidays +# Upstream KDE project: kholidays +%global oldname kf6-kholidays + +%global framework kholidays + +#Name: kf6-%%{framework} +Name: sonic-frameworks-holidays +Version: 6.29.0 +Release: 1%{?dist} +Summary: The KHolidays Library + +License: BSD-2-Clause AND CC0-1.0 AND GPL-3.0-or-later AND LGPL-2.0-or-later WITH Bison-exception-2.2 +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: sonic-rpm-macros +BuildRequires: cmake +BuildRequires: gcc-c++ + +BuildRequires: pkgconfig(Qt6Core) +BuildRequires: pkgconfig(Qt6Qml) +BuildRequires: qt6-qttools-static +BuildRequires: make +BuildRequires: flex +BuildRequires: bison + +Provides: kf6-kholidays = %{version}-%{release} +Conflicts: kf6-kholidays < %{version}-%{release} + +%description +The KHolidays library provides a C++ API that determines holiday +and other special events for a geographical region. + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Provides: kf6-kholidays-devel = %{version}-%{release} +Conflicts: kf6-kholidays-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kholidays-doc = %{version}-%{release} +Conflicts: kf6-kholidays-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kholidays-html = %{version}-%{release} +Conflicts: kf6-kholidays-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang_kf6 libkholidays6_qt + +%files -f libkholidays6_qt.lang +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/*categories +%{_kf6_libdir}/libKF6Holidays.so.* +%{_kf6_qmldir}/org/kde/kholidays/ + +%files devel +%{_kf6_includedir}/KHolidays/ +%{_kf6_libdir}/cmake/KF6Holidays/ +%{_kf6_libdir}/libKF6Holidays.so +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-icon-themes/sonic-frameworks-icon-themes.spec b/sonic-frameworks-icon-themes/sonic-frameworks-icon-themes.spec new file mode 100644 index 0000000..9bf4586 --- /dev/null +++ b/sonic-frameworks-icon-themes/sonic-frameworks-icon-themes.spec @@ -0,0 +1,126 @@ +# Generated for SonicDE from Fedora's kf6-kiconthemes.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-icon-themes fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-icon-themes +# Upstream KDE project: kiconthemes +%global oldname kf6-kiconthemes + +%global framework kiconthemes + +#Name: kf6-%%{framework} +Name: sonic-frameworks-icon-themes +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 3 integration module with icon themes + +License: CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: sonic-rpm-macros + +BuildRequires: qt6-qtbase-private-devel +BuildRequires: qt6-qtbase-devel +BuildRequires: cmake(Qt6Svg) +BuildRequires: cmake(Qt6Qml) +BuildRequires: cmake(Qt6UiPlugin) +BuildRequires: cmake(KF6Archive) +BuildRequires: cmake(KF6BreezeIcons) +BuildRequires: cmake(KF6ColorScheme) +BuildRequires: cmake(KF6ConfigWidgets) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6ItemViews) +BuildRequires: cmake(KF6WidgetsAddons) + +BuildRequires: pkgconfig(xkbcommon) + +Requires: hicolor-icon-theme + +Provides: kf6-kiconthemes = %{version}-%{release} +Conflicts: kf6-kiconthemes < %{version}-%{release} + +%description +KDE Frameworks 6 Tier 3 integration module with icon themes + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: qt6-qtbase-devel +Provides: kf6-kiconthemes-devel = %{version}-%{release} +Conflicts: kf6-kiconthemes-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kiconthemes-doc = %{version}-%{release} +Conflicts: kf6-kiconthemes-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kiconthemes-html = %{version}-%{release} +Conflicts: kf6-kiconthemes-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang %{oldname} --all-name + +%files -f %{name}.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_bindir}/kiconfinder6 +%{_kf6_libdir}/libKF6IconThemes.so.* +%{_kf6_libdir}/libKF6IconWidgets.so.* +%{_kf6_qtplugindir}/kiconthemes6/iconengines/KIconEnginePlugin.so +%{_kf6_libdir}/qt6/qml/org/kde/iconthemes/ +%{_kf6_datadir}/qlogging-categories6/%{framework}.* + +%files devel +%{_kf6_includedir}/KIconThemes +%{_kf6_includedir}/KIconWidgets +%{_kf6_libdir}/libKF6IconThemes.so +%{_kf6_libdir}/libKF6IconWidgets.so +%{_kf6_libdir}/cmake/KF6IconThemes/ +%{_kf6_qtplugindir}/designer/kiconthemes6widgets.so +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-idle-tracker/sonic-frameworks-idle-tracker.spec b/sonic-frameworks-idle-tracker/sonic-frameworks-idle-tracker.spec new file mode 100644 index 0000000..e194b1d --- /dev/null +++ b/sonic-frameworks-idle-tracker/sonic-frameworks-idle-tracker.spec @@ -0,0 +1,140 @@ +# Generated for SonicDE from Fedora's kf6-kidletime.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-idle-tracker fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-idle-tracker +# Upstream KDE project: kidletime +%global oldname kf6-kidletime + +# Disable X11 for RHEL +%bcond x11 %[%{undefined rhel}] + +%global framework kidletime + +#Name: kf6-%%{framework} +Name: sonic-frameworks-idle-tracker +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 1 integration module for idle time detection +License: CC0-1.0 AND GPL-2.0-or-later AND LGPL-2.1-or-later AND MIT +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: sonic-rpm-macros +BuildRequires: qt6-qtbase-devel +BuildRequires: wayland-devel +BuildRequires: wayland-protocols-devel +BuildRequires: cmake(PlasmaWaylandProtocols) +BuildRequires: cmake(Qt6WaylandClient) +Requires: kf6-filesystem +%if %{with x11} +Recommends: %{name}-x11%{?_isa} = %{version}-%{release} +%endif + +Provides: kf6-kidletime = %{version}-%{release} +Conflicts: kf6-kidletime < %{version}-%{release} + +%description +KDE Frameworks 6 Tier 1 integration module for idle time detection. + +%if %{with x11} +%package x11 +Summary: Idle time detection plugins for X11 environments +BuildRequires: pkgconfig(xext) +BuildRequires: pkgconfig(x11-xcb) +BuildRequires: pkgconfig(xcb) +BuildRequires: pkgconfig(xcb-sync) +BuildRequires: pkgconfig(xscrnsaver) +BuildRequires: pkgconfig(xkbcommon) +Requires: %{name}%{?_isa} = %{version}-%{release} +Conflicts: %{name} < 6.6.0-1 +# X11 is deprecated and this will be removed eventually... +Provides: deprecated() + +Provides: kf6-kidletime-x11 = %{version}-%{release} +Conflicts: kf6-kidletime-x11 < %{version}-%{release} + +%description x11 +The %{name}-x11 package contains plugins for applications using +%{name} to detect idle time on X11 environments. +%endif + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Requires: qt6-qtbase-devel +Provides: kf6-kidletime-devel = %{version}-%{release} +Conflicts: kf6-kidletime-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kidletime-doc = %{version}-%{release} +Conflicts: kf6-kidletime-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kidletime-html = %{version}-%{release} +Conflicts: kf6-kidletime-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 \ + -DWITH_X11=%{?with_x11:ON}%{?!with_x11:OFF} +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%files +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/%{framework}.* +%{_kf6_libdir}/libKF6IdleTime.so.* +%dir %{_kf6_plugindir}/org.kde.kidletime.platforms/ +# SonicDE is X11 only: %%{_kf6_plugindir}/org.kde.kidletime.platforms/KF6IdleTimeWaylandPlugin.so + +%if %{with x11} +%files x11 +%{_kf6_plugindir}/org.kde.kidletime.platforms/KF6IdleTimeXcbPlugin0.so +%{_kf6_plugindir}/org.kde.kidletime.platforms/KF6IdleTimeXcbPlugin1.so +%endif + +%files devel +%{_kf6_includedir}/KIdleTime/ +%{_kf6_libdir}/libKF6IdleTime.so +%{_kf6_libdir}/cmake/KF6IdleTime/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-image-formats/sonic-frameworks-image-formats.spec b/sonic-frameworks-image-formats/sonic-frameworks-image-formats.spec new file mode 100644 index 0000000..54afbd2 --- /dev/null +++ b/sonic-frameworks-image-formats/sonic-frameworks-image-formats.spec @@ -0,0 +1,96 @@ +# Generated for SonicDE from Fedora's kf6-kimageformats.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-image-formats fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-image-formats +# Upstream KDE project: kimageformats +%global oldname kf6-kimageformats + +%undefine __cmake_in_source_build +%global framework kimageformats + +#Name: kf6-%%{framework} +Name: sonic-frameworks-image-formats +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 1 addon with additional image plugins for QtGui + +License: LGPLv2+ +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: http://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: http://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +# upstream patches + +BuildRequires: sonic-frameworks-cmake-modules >= %{majmin_ver_kf6}.0 +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(Qt6Gui) +BuildRequires: cmake(KF6Archive) +BuildRequires: cmake(Qt6PrintSupport) +BuildRequires: pkgconfig(cups) +BuildRequires: cmake(OpenEXR) +BuildRequires: cmake(libavif) +BuildRequires: pkgconfig(libheif) >= 1.10.0 +%if !((0%{?fedora} && 0%{?fedora} < 41) || (0%{?rhel} && 0%{?rhel} < 10)) +BuildRequires: pkgconfig(libjxl) >= 0.9.4 +BuildRequires: pkgconfig(libjxl_threads) >= 0.9.4 +BuildRequires: pkgconfig(libjxl_cms) >= 0.9.4 +%endif +BuildRequires: cmake(OpenJPEG) +BuildRequires: pkgconfig(libraw) >= 0.20.2 +BuildRequires: pkgconfig(libraw_r) >= 0.20.2 +BuildRequires: jxrlib-devel + +Requires: kf6-filesystem +# for eps plugin read/write support +Recommends: poppler-utils +Recommends: ghostscript + +Provides: kf6-kimageformats = %{version}-%{release} +Conflicts: kf6-kimageformats < %{version}-%{release} + +%description +This framework provides additional image format plugins for QtGui. As +such it is not required for the compilation of any other software, but +may be a runtime requirement for Qt-based software to support certain +image formats. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Provides: kf6-kimageformats-devel = %{version}-%{release} +Conflicts: kf6-kimageformats-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 \ + -DKIMAGEFORMATS_HEIF:BOOL=ON \ + -DKIMAGEFORMATS_JXR:BOOL=ON +%cmake_build + +%install +%cmake_install + +%files +%doc README.md +%license LICENSES/*.txt +%{_kf6_qtplugindir}/imageformats/*.so + +%files devel +%{_kf6_libdir}/cmake/KF6ImageFormats/ + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-internationalization/sonic-frameworks-internationalization.spec b/sonic-frameworks-internationalization/sonic-frameworks-internationalization.spec new file mode 100644 index 0000000..71a4a6a --- /dev/null +++ b/sonic-frameworks-internationalization/sonic-frameworks-internationalization.spec @@ -0,0 +1,136 @@ +# Generated for SonicDE from Fedora's kf6-ki18n.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-internationalization fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-internationalization +# Upstream KDE project: ki18n +%global oldname kf6-ki18n + +%global framework ki18n + +#Name: kf6-%%{framework} +Name: sonic-frameworks-internationalization +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 1 addon for localization +License: BSD-3-Clause AND CC0-1.0 AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-3.0-only AND (LGPL-2.1-only OR LGPL-3.0-only) AND ODbl-1.0 +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: gettext +BuildRequires: sonic-rpm-macros +BuildRequires: perl-interpreter +BuildRequires: python3 +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtdeclarative-devel +BuildRequires: cmake(Qt6Qml) +BuildRequires: pkgconfig(iso-codes) + +Requires: iso-codes +Requires: kf6-filesystem + +Provides: kf6-ki18n = %{version}-%{release} +Conflicts: kf6-ki18n < %{version}-%{release} + +%description +KDE Frameworks 6 Tier 1 addon for localization. + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Requires: gettext +Requires: python3 +Provides: kf6-ki18n-devel = %{version}-%{release} +Conflicts: kf6-ki18n-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-ki18n-doc = %{version}-%{release} +Conflicts: kf6-ki18n-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-ki18n-html = %{version}-%{release} +Conflicts: kf6-ki18n-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang %{oldname} --all-name + +%files -f %{name}.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_libdir}/libKF6I18n.so.6 +%{_kf6_libdir}/libKF6I18n.so.%{version} +%{_kf6_libdir}/libKF6I18nQml.so.6 +%{_kf6_libdir}/libKF6I18nQml.so.%{version} +%{_kf6_libdir}/libKF6I18nLocaleData.so.6 +%{_kf6_libdir}/libKF6I18nLocaleData.so.%{version} +%{_kf6_datadir}/qlogging-categories6/*%{framework}* +%{_kf6_qmldir}/org/kde/i18n/localeData/ +%{_kf6_qmldir}/org/kde/ki18n/ +%{_kf6_qtplugindir}/kf6/ktranscript.so +%lang(ca) %{_datadir}/locale/ca/LC_SCRIPTS/ki18n6/ +%lang(ca@valencia) %{_datadir}/locale/ca@valencia/LC_SCRIPTS/ki18n6/ +%lang(fi) %{_datadir}/locale/fi/LC_SCRIPTS/ki18n6/ +%lang(gd) %{_datadir}/locale/gd/LC_SCRIPTS/ki18n6/ +%lang(ja) %{_datadir}/locale/ja/LC_SCRIPTS/ki18n6/ +%lang(ko) %{_datadir}/locale/ko/LC_SCRIPTS/ki18n6/ +%lang(ru) %{_datadir}/locale/ru/LC_SCRIPTS/ki18n6/ +%lang(sr) %{_datadir}/locale/sr/LC_SCRIPTS/ki18n6/ +%lang(nb) %{_datadir}/locale/nb/LC_SCRIPTS/ki18n6/ +%lang(nn) %{_datadir}/locale/nn/LC_SCRIPTS/ki18n6/ +%lang(sr@ijekavian) %{_datadir}/locale/sr@ijekavian/LC_SCRIPTS/ki18n6/ +%lang(sr@ijekavianlatin) %{_datadir}/locale/sr@ijekavianlatin/LC_SCRIPTS/ki18n6/ +%lang(sr@latin) %{_datadir}/locale/sr@latin/LC_SCRIPTS/ki18n6/ +%lang(sr) %{_datadir}/locale/uk/LC_SCRIPTS/ki18n6/ + +%files devel +%{_kf6_includedir}/KI18n/ +%{_kf6_includedir}/KI18nLocaleData/ +%{_kf6_libdir}/libKF6I18n.so +%{_kf6_libdir}/libKF6I18nQml.so +%{_kf6_libdir}/libKF6I18nLocaleData.so +%{_kf6_libdir}/cmake/KF6I18n/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-io-extras/sonic-frameworks-io-extras.spec b/sonic-frameworks-io-extras/sonic-frameworks-io-extras.spec new file mode 100644 index 0000000..c4044aa --- /dev/null +++ b/sonic-frameworks-io-extras/sonic-frameworks-io-extras.spec @@ -0,0 +1,156 @@ +# Generated for SonicDE from Fedora's kio-extras.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-io-extras fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-io-extras +# Upstream KDE project: kio-extras +%global oldname kio-extras + +#Name: kio-extras +Name: sonic-frameworks-io-extras +Version: 26.04.3 +Release: 1%{?dist} +Summary: Additional components to increase the functionality of KIO Framework + +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later +#URL: https://invent.kde.org/network/kio-extras +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/release-service/%%{version}/src/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz + +## upstramable patches + +## upstream patches + +BuildRequires: bzip2-devel +BuildRequires: gperf + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros + +BuildRequires: cmake(Qt6) +BuildRequires: cmake(Qt6Core5Compat) +BuildRequires: cmake(Qt6Qml) +BuildRequires: cmake(Qt6Svg) +BuildRequires: cmake(QCoro6) +BuildRequires: cmake(KF6Archive) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6ConfigWidgets) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6DNSSD) +BuildRequires: cmake(KF6DocTools) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6KCMUtils) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6Solid) +BuildRequires: cmake(KF6SyntaxHighlighting) +BuildRequires: cmake(KF6TextWidgets) +BuildRequires: cmake(KF6Notifications) + +BuildRequires: cmake(PlasmaActivities) +BuildRequires: cmake(PlasmaActivitiesStats) + +BuildRequires: cmake(KDSoap) >= 1.9 +BuildRequires: cmake(KDSoapWSDiscoveryClient) +BuildRequires: cmake(KExiv2Qt6) +BuildRequires: pkgconfig(libproxy-1.0) + +BuildRequires: libjpeg-devel +BuildRequires: libmtp-devel +BuildRequires: libsmbclient-devel +BuildRequires: libssh-devel +BuildRequires: cmake(OpenEXR) +BuildRequires: perl-generators +BuildRequires: phonon-qt6-devel +BuildRequires: pkgconfig(libimobiledevice-1.0) +BuildRequires: pkgconfig(libplist-2.0) +BuildRequires: pkgconfig(libtirpc) +BuildRequires: pkgconfig(shared-mime-info) +BuildRequires: pkgconfig(xcursor) +BuildRequires: taglib-devel > 1.11 + +# This package provides plugins for KIO +Supplements: kf6-kio-core + +Provides: kio-extras = %{version}-%{release} +Conflicts: kio-extras < %{version}-%{release} + +%description +%{summary}. + +%package info +Summary: Info kioslave +Provides: kio-extras-info = %{version}-%{release} +Conflicts: kio-extras-info < %{version}-%{release} + +%description info +Kioslave for reading info pages. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Provides: kio-extras-devel = %{version}-%{release} +Conflicts: kio-extras-devel < %{version}-%{release} + +%description devel +%{summary}. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 -DLIBSSH_LIBRARIES="$(pkg-config --libs libssh)" +%cmake_build + + +%install +%cmake_install +%find_lang %{oldname} --all-name --with-html + + +%files -f %{name}.lang +%license LICENSES/* + +%{_kf6_plugindir}/kded/ +%exclude %{_kf6_plugindir}/kio/info.so +%{_kf6_plugindir}/kio/ +%{_kf6_plugindir}/kiod/ +%{_kf6_plugindir}/thumbcreator/ +%{_kf6_plugindir}/kfileitemaction/ +%{_datadir}/config.kcfg/jpegcreatorsettings5.kcfg +%{_datadir}/dbus-1/services/org.kde.kmtpd5.service +%{_datadir}/applications/kcm_* +%{_datadir}/mime/packages/org.kde.kio.smb.xml +%{_datadir}/remoteview/ +%{_datadir}/konqueror/ +%dir %{_kf6_datadir}/kio_filenamesearch/ +%{_kf6_datadir}/kio_filenamesearch/kio-filenamesearch-grep +%{_kf6_datadir}/qlogging-categories6/kio-extras* +%{_kf6_datadir}/solid/actions/solid_afc.desktop +%{_kf6_datadir}/solid/actions/solid_mtp.desktop +%{_kf6_libdir}/libkioarchive6.so.6{,.*} +%{_kf6_libexecdir}/smbnotifier +%{_libexecdir}/wpad-detector-helper +%{_kf6_qtplugindir}/kcm_trash.so +%{_kf6_qtplugindir}/plasma/kcms/systemsettings_qwidgets/kcm_*.so + +%files info +%{_kf6_plugindir}/kio/info.so +# perl deps, but required at runtime for the info kioslave to actually work: +%dir %{_datadir}/kio_info/ +%{_datadir}/kio_info/kde-info2html* + +%files devel +%{_includedir}/KioArchive6/*.h +%{_kf6_libdir}/cmake/KioArchive6/ + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 26.04.3-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-io-fuse/sonic-frameworks-io-fuse.spec b/sonic-frameworks-io-fuse/sonic-frameworks-io-fuse.spec new file mode 100644 index 0000000..67db820 --- /dev/null +++ b/sonic-frameworks-io-fuse/sonic-frameworks-io-fuse.spec @@ -0,0 +1,101 @@ +# Generated for SonicDE from Fedora's kio-fuse.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-io-fuse fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-io-fuse +# Upstream KDE project: kio-fuse +%global oldname kio-fuse + +%global min_qt_version 5.12 +%global min_kf_version 5.66 + +# uncomment to enable bootstrap mode +#global bootstrap 1 + +%if !0%{?bootstrap} +%global tests 1 +%endif + +#Name: kio-fuse +Name: sonic-frameworks-io-fuse +Version: 6.0.0 +Release: 1%{?dist} +Summary: KIO FUSE + +License: GPL-3.0-or-later +#URL: https://invent.kde.org/system/kio-fuse +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/stable/%%{name}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/stable/%%{name}/%%{name}-%%{version}.tar.xz.sig +#Source2: gpgkey-21EC3FD75D26B39E820BE6FBD27C2C1AF21D8BAD.gpg + +## upstream fixes + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: systemd +BuildRequires: sonic-rpm-macros +BuildRequires: sonic-frameworks-cmake-modules >= %{min_kf_version} + +BuildRequires: pkgconfig(fuse3) + +BuildRequires: cmake(Qt6Core) >= %{min_qt_version} +BuildRequires: cmake(Qt6Test) >= %{min_qt_version} + +BuildRequires: cmake(KF6KIO) >= %{min_kf_version} +BuildRequires: cmake(KF6CoreAddons) >= %{min_kf_version} + +%if 0%{?tests} +BuildRequires: dbus-x11 +BuildRequires: sonic-frameworks-io-extras +BuildRequires: fuse3 +%endif + +Requires: systemd +Requires: dbus-common + +Provides: kio-fuse = %{version}-%{release} +Conflicts: kio-fuse < %{version}-%{release} + +%description +KioFuse works by acting as a bridge between KDE's KIO filesystem design and +FUSE. + + +%prep +# The SonicDE release tarballs come from GitHub and are not GPG signed. +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 -DBUILD_TESTING:BOOL=%{?tests:ON}%{!?tests:OFF} \ + -DQT_MAJOR_VERSION=6 + +%cmake_build + + +%install +%cmake_install + + +%check +%if 0%{?tests} +export CTEST_OUTPUT_ON_FAILURE=1 +dbus-launch --exit-with-session \ +%ctest --timeout 30 ||: +%endif + + +%files +%license LICENSES/GPL-3.0-or-later.txt +%doc README.md DESIGN.md +%{_libexecdir}/kio-fuse +%{_userunitdir}/kio-fuse.service +%{_kf6_datadir}/dbus-1/services/org.kde.KIOFuse.service +%{_tmpfilesdir}/%{oldname}-tmpfiles.conf + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.0.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-io/0001-Give-the-kuriikwsfiltereng_private-a-VERSION-and-SOV.patch b/sonic-frameworks-io/0001-Give-the-kuriikwsfiltereng_private-a-VERSION-and-SOV.patch new file mode 100644 index 0000000..6f1529a --- /dev/null +++ b/sonic-frameworks-io/0001-Give-the-kuriikwsfiltereng_private-a-VERSION-and-SOV.patch @@ -0,0 +1,30 @@ +From 0cc287336b32e601e70b26d60d9335abde538a18 Mon Sep 17 00:00:00 2001 +From: Adam Williamson +Date: Mon, 16 Oct 2023 17:57:16 -0700 +Subject: [PATCH] Give the kuriikwsfiltereng_private a VERSION and SOVERSION + (#26) + +Signed-off-by: Adam Williamson +--- + src/urifilters/ikws/CMakeLists.txt | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/urifilters/ikws/CMakeLists.txt b/src/urifilters/ikws/CMakeLists.txt +index 7d42584c3..393588993 100644 +--- a/src/urifilters/ikws/CMakeLists.txt ++++ b/src/urifilters/ikws/CMakeLists.txt +@@ -1,6 +1,11 @@ + add_subdirectory(searchproviders) + + add_library(kuriikwsfiltereng_private kuriikwsfiltereng.cpp searchprovider.cpp searchproviderregistry.cpp) ++set_target_properties(kuriikwsfiltereng_private PROPERTIES ++ VERSION ${KIO_VERSION} ++ SOVERSION ${KIO_SOVERSION} ++ EXPORT_NAME kuriikwsfiltereng_private ++) + generate_export_header(kuriikwsfiltereng_private) # We need this to be a shared lib, because otherwise we have duplicate Q_GLOBAL_STATICs + target_link_libraries(kuriikwsfiltereng_private PUBLIC KF6::KIOGui) + install(TARGETS kuriikwsfiltereng_private ${KF_INSTALL_TARGETS_DEFAULT_ARGS}) +-- +2.41.0 + diff --git a/sonic-frameworks-io/sonic-frameworks-io.spec b/sonic-frameworks-io/sonic-frameworks-io.spec new file mode 100644 index 0000000..88ba3d9 --- /dev/null +++ b/sonic-frameworks-io/sonic-frameworks-io.spec @@ -0,0 +1,280 @@ +# Generated for SonicDE from Fedora's kf6-kio.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-io fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-io +# Upstream KDE project: kio +%global oldname kf6-kio + +%global framework kio + +#Name: kf6-%%{framework} +Name: sonic-frameworks-io +Version: 6.29.0.1 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 3 solution for filesystem abstraction + +License: BSD-2-Clause AND BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) AND MIT +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +# https://invent.kde.org/frameworks/kio/-/issues/26 +# I'm not sending this upstream because I'm not sure it's really +# exactly what upstream will want, but it solves the practical +# issue for us for now +Patch0: 0001-Give-the-kuriikwsfiltereng_private-a-VERSION-and-SOV.patch + +%if 0%{?flatpak} +# Disable the help: and ghelp: protocol for Flatpak builds, to avoid depending +# on the docbook stack. +Patch101: kio-no-help-protocol.patch +%endif + + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: gcc-c++ +BuildRequires: sonic-rpm-macros +BuildRequires: cmake +BuildRequires: cmake(KF6Archive) +BuildRequires: cmake(KF6Crash) +BuildRequires: cmake(KF6Solid) +BuildRequires: switcheroo-control +BuildRequires: cmake(KF6ColorScheme) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6DocTools) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6Service) +BuildRequires: qt6-qtbase-private-devel +BuildRequires: cmake(KF6Bookmarks) +BuildRequires: cmake(KF6Completion) +BuildRequires: cmake(KF6ConfigWidgets) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: cmake(KF6ItemViews) +BuildRequires: cmake(KF6JobWidgets) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6Wallet) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: cmake(KF6XmlGui) + +BuildRequires: libacl-devel +%if !0%{?flatpak} +BuildRequires: libxml2-devel +BuildRequires: libxslt-devel +%endif +BuildRequires: pkgconfig(blkid) +BuildRequires: pkgconfig(mount) +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: zlib-devel + +BuildRequires: qt6-qtbase-devel +BuildRequires: cmake(Qt6UiPlugin) +BuildRequires: cmake(Qt6Qml) + +BuildRequires: cmake(KF6KDED) +BuildRequires: cmake(Qt6Core5Compat) + +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Requires: %{name}-widgets%{?_isa} = %{version}-%{release} +Requires: %{name}-file-widgets%{?_isa} = %{version}-%{release} +Requires: %{name}-gui%{?_isa} = %{version}-%{release} + +Requires: sonic-daemon + +Provides: kf6-kio = %{version}-%{release} +Conflicts: kf6-kio < %{version}-%{release} + +%description +KDE Frameworks 6 Tier 3 solution for filesystem abstraction + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Requires: sonic-frameworks-bookmarks-devel +Requires: cmake(KF6Completion) +Requires: cmake(KF6Config) +Requires: cmake(KF6CoreAddons) +Requires: cmake(KF6ItemViews) +Requires: cmake(KF6JobWidgets) +Requires: cmake(KF6Service) +Requires: cmake(KF6Solid) +Requires: cmake(KF6XmlGui) +Requires: cmake(KF6WindowSystem) +Requires: qt6-qtbase-devel +Provides: kf6-kio-devel = %{version}-%{release} +Conflicts: kf6-kio-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Documentation files for %{name} +Requires: %{name}-core = %{version}-%{release} +BuildArch: noarch +Provides: kf6-kio-doc = %{version}-%{release} +Conflicts: kf6-kio-doc < %{version}-%{release} + +%description doc +Documentation for %{name}. + +%package core +Summary: Core components of the KIO Framework +%{?kf6_kinit_requires} +Requires: %{name}-core-libs%{?_isa} = %{version}-%{release} +Requires: %{name}-doc = %{version}-%{release} +Requires: kf6-filesystem +Recommends: switcheroo-control +Provides: kf6-kio-core = %{version}-%{release} +Conflicts: kf6-kio-core < %{version}-%{release} + +%description core +KIOCore library provides core non-GUI components for working with KIO. + +%package core-libs +Summary: Runtime libraries for KIO Core +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Provides: kf6-kio-core-libs = %{version}-%{release} +Conflicts: kf6-kio-core-libs < %{version}-%{release} + +%description core-libs +%{summary}. + +%package widgets +Summary: Widgets for KIO Framework +## org.kde.klauncher6 service referenced from : widgets/krun.cpp +## included here for completeness, even those -core already has a dependency. +%{?kf6_kinit_requires} +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Provides: kf6-kio-widgets = %{version}-%{release} +Conflicts: kf6-kio-widgets < %{version}-%{release} + +%description widgets +KIOWidgets contains classes that provide generic job control, progress +reporting, etc. + +%package widgets-libs +Summary: Runtime libraries for KIO Widgets library +Requires: %{name}-widgets%{?_isa} = %{version}-%{release} +Provides: kf6-kio-widgets-libs = %{version}-%{release} +Conflicts: kf6-kio-widgets-libs < %{version}-%{release} + +%description widgets-libs +%{summary}. + +%package file-widgets +Summary: Widgets for file-handling for KIO Framework +Requires: %{name}-widgets%{?_isa} = %{version}-%{release} +Provides: kf6-kio-file-widgets = %{version}-%{release} +Conflicts: kf6-kio-file-widgets < %{version}-%{release} + +%description file-widgets +The KIOFileWidgets library provides the file selection dialog and +its components. + +%package gui +Summary: Gui components for the KIO Framework +Requires: %{name}-core%{?_isa} = %{version}-%{release} +Provides: kf6-kio-gui = %{version}-%{release} +Conflicts: kf6-kio-gui < %{version}-%{release} + +%description gui +%{summary}. + +%package qch-doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kio-qch-doc = %{version}-%{release} +Conflicts: kf6-kio-qch-doc < %{version}-%{release} + +%description qch-doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kio-html = %{version}-%{release} +Conflicts: kf6-kio-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang %{oldname} --all-name --with-man --with-html + +%files +%license LICENSES/*.txt +%doc README.md + +%files core +%{_kf6_libexecdir}/kioexec +%{_kf6_libexecdir}/kiod6 +%{_kf6_libexecdir}/kioworker +%{_kf6_bindir}/ktelnetservice6 +%{_kf6_bindir}/ktrash6 +%{_kf6_plugindir}/kio/ +%{_kf6_plugindir}/kded/ +%{_kf6_plugindir}/kiod/ +%{_kf6_plugindir}/kio_dnd/ +%{_kf6_datadir}/kf6/searchproviders/*.desktop +%{_kf6_datadir}/applications/*.desktop +%{_datadir}/dbus-1/services/org.kde.*.service +%{_kf6_datadir}/qlogging-categories6/*categories + +%files core-libs +%{_kf6_libdir}/libKF6KIOCore.so.* + +%files doc -f %{name}.lang + +%files gui +%{_kf6_libdir}/libKF6KIOGui.so.* + +%files widgets +%dir %{_kf6_plugindir}/urifilters/ +%{_kf6_plugindir}/urifilters/*.so +%{_kf6_libdir}/libkuriikwsfiltereng_private.so.* + +%files widgets-libs +%{_kf6_libdir}/libKF6KIOWidgets.so.* + +%files file-widgets +%{_kf6_libdir}/libKF6KIOFileWidgets.so.* + +%files devel +%{_kf6_includedir}/* +%{_kf6_libdir}/*.so +%{_kf6_libdir}/cmake/KF6KIO/ +%{_kf6_datadir}/kdevappwizard/templates/kioworker6.tar.bz2 +%{_kf6_qtplugindir}/designer/kio6widgets.so +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files qch-doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0.1-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-keybind/sonic-frameworks-keybind.spec b/sonic-frameworks-keybind/sonic-frameworks-keybind.spec index 3fe7775..4de4cbe 100644 --- a/sonic-frameworks-keybind/sonic-frameworks-keybind.spec +++ b/sonic-frameworks-keybind/sonic-frameworks-keybind.spec @@ -3,25 +3,25 @@ %global framework kglobalaccel -#Name: kf6-%{framework} +#Name: kf6-%%{framework} Name: sonic-frameworks-keybind -Version: 6.25.0 +Version: 6.29.0 Release: 1%{?dist} Summary: KDE Frameworks 6 Tier 3 integration module for global shortcuts # The following are in the LICENSES folder but go unused: LGPL-2.1-only, LGPL-3.0-only, LicenseRef-KDE-Accepted-LGPL License: CC0-1.0 AND LGPL-2.0-or-later -#URL: https://invent.kde.org/frameworks/%{framework} -#Source0: https://download.kde.org/%{stable_kf6}/frameworks/%{majmin_ver_kf6}/%{framework}-%{version}.tar.xz -#Source1: https://download.kde.org/%{stable_kf6}/frameworks/%{majmin_ver_kf6}/%{framework}-%{version}.tar.xz.sig +#URL: https://invent.kde.org/frameworks/%%{framework} +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig URL: https://github.com/Sonic-DE/sonic-frameworks-keybind Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz -BuildRequires: extra-cmake-modules >= %{version} +BuildRequires: sonic-frameworks-cmake-modules >= %{version} BuildRequires: gcc-c++ BuildRequires: cmake -BuildRequires: kf6-rpm-macros +BuildRequires: sonic-rpm-macros BuildRequires: cmake(KF6Config) BuildRequires: cmake(KF6CoreAddons) BuildRequires: cmake(KF6Crash) @@ -106,6 +106,9 @@ rm -fv %{buildroot}%{_prefix}/lib/systemd/user/plasma-kglobalaccel.service %exclude %{_qt6_docdir}/*/*.index %changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- Update to SonicDE 6.29.0 from the hard fork; build on Enterprise Linux 10 and Fedora + * Thu Apr 09 2026 Steve Cossette - 6.25.0-1 - 6.25.0 diff --git a/sonic-frameworks-keyring-pam/sonic-frameworks-keyring-pam.spec b/sonic-frameworks-keyring-pam/sonic-frameworks-keyring-pam.spec new file mode 100644 index 0000000..6185df4 --- /dev/null +++ b/sonic-frameworks-keyring-pam/sonic-frameworks-keyring-pam.spec @@ -0,0 +1,77 @@ +# Generated for SonicDE from Fedora's pam-kwallet.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-keyring-pam fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-keyring-pam +# Upstream KDE project: kwallet-pam +%global oldname pam-kwallet + + +%global base_name kwallet-pam + + +# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} + +#Name: pam-kwallet +Name: sonic-frameworks-keyring-pam +Summary: PAM module for KWallet +Version: 6.7.4 +Release: 1%{?dist} +License: LGPL-2.0-or-later +#URL: https://invent.kde.org/plasma/%%{base_name}.git +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{base_name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{base_name}-%%{version}.tar.xz.sig + +## upstream patches + +## upstreamable patches + +Provides: %{base_name} = %{version}-%{release} + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: systemd-rpm-macros +BuildRequires: libgcrypt-devel >= 1.5.0 +BuildRequires: pam-devel +BuildRequires: cmake(KF6Wallet) +BuildRequires: socat + +# https://bugzilla.redhat.com/show_bug.cgi?id=1155873 +Requires: socat +# pam module makes little sense without the actually kwallet service +Requires: sonic-frameworks-keyring + +Provides: pam-kwallet = %{version}-%{release} +Conflicts: pam-kwallet < %{version}-%{release} + +%description +%{summary}. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build + + +%install +%cmake_install + + +%files +%{_sysconfdir}/xdg/autostart/pam_kwallet_init.desktop +%{_userunitdir}/plasma-kwallet-pam.service +%{_libexecdir}/pam_kwallet_init +%{_libdir}/security/pam_kwallet5.so + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-keyring/sonic-frameworks-keyring.spec b/sonic-frameworks-keyring/sonic-frameworks-keyring.spec new file mode 100644 index 0000000..0722a2a --- /dev/null +++ b/sonic-frameworks-keyring/sonic-frameworks-keyring.spec @@ -0,0 +1,157 @@ +# Generated for SonicDE from Fedora's kf6-kwallet.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-keyring fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-keyring +# Upstream KDE project: kwallet +%global oldname kf6-kwallet + +%global framework kwallet + +#Name: kf6-%%{framework} +Name: sonic-frameworks-keyring +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 3 solution for password management + +License: BSD-3-Clause AND CC0-1.0 AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-or-later AND LGPL-3.0-or-later +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: cmake(Qca-qt6) +BuildRequires: cmake(Qt6Core5Compat) + +BuildRequires: cmake(KF6ConfigWidgets) + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: gcc-c++ +BuildRequires: libgcrypt-devel +BuildRequires: cmake +BuildRequires: qt6-qtbase-devel + +BuildRequires: cmake(Qt6Core5Compat) + +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6DocTools) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6Service) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: cmake(KF6Crash) +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(KF6ColorScheme) +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: cmake(Gpgmepp) +BuildRequires: pkgconfig(libsecret-1) + +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: kf6-filesystem +Requires: pinentry-gui +Requires: qca-qt6-ossl%{?_isa} + +Provides: kf6-kwallet = %{version}-%{release} +Conflicts: kf6-kwallet < %{version}-%{release} + +%description +KWallet is a secure and unified container for user passwords. + +%package libs +Summary: KWallet framework libraries +Requires: (%{name}%{?_isa} = %{version}-%{release} if systemd) +Provides: kf6-kwallet-libs = %{version}-%{release} +Conflicts: kf6-kwallet-libs < %{version}-%{release} + +%description libs +Provides API to access KWallet data from applications. + +%package devel +Summary: Development files for %{name} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: qt6-qtbase-devel + +Provides: kf6-kwallet-devel = %{version}-%{release} +Conflicts: kf6-kwallet-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kwallet-doc = %{version}-%{release} +Conflicts: kf6-kwallet-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kwallet-html = %{version}-%{release} +Conflicts: kf6-kwallet-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang %{oldname} --all-name --with-man + +%files -f %{name}.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_bindir}/kwallet-query +%{_kf6_bindir}/kwalletd6 +%{_kf6_bindir}/ksecretd +%{_kf6_datadir}/applications/org.kde.ksecretd.desktop +%{_kf6_datadir}/dbus-1/services/org.kde.secretservicecompat.service +%{_kf6_datadir}/dbus-1/services/org.kde.kwalletd5.service +%{_kf6_datadir}/dbus-1/services/org.kde.kwalletd6.service +%{_kf6_datadir}/dbus-1/services/org.freedesktop.impl.portal.desktop.kwallet.service +%{_kf6_datadir}/knotifications6/ksecretd.notifyrc +%{_kf6_datadir}/qlogging-categories6/%{framework}* +%{_kf6_datadir}/xdg-desktop-portal/portals/kwallet.portal +%{_kf6_datadir}/config.kcfg/kwalletsettings.kcfg +%{_mandir}/man1/kwallet-query.1* + +%files libs +%{_kf6_libdir}/libKF6Wallet.so.* +%{_libdir}/libKF6WalletBackend.so.* + +%files devel +%{_kf6_datadir}/dbus-1/interfaces/kf6_org.kde.KWallet.xml +%{_kf6_includedir}/KWallet/ +%{_kf6_libdir}/cmake/KF6Wallet/ +%{_kf6_libdir}/libKF6Wallet.so +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-modemmanager/sonic-frameworks-modemmanager.spec b/sonic-frameworks-modemmanager/sonic-frameworks-modemmanager.spec new file mode 100644 index 0000000..2798bdd --- /dev/null +++ b/sonic-frameworks-modemmanager/sonic-frameworks-modemmanager.spec @@ -0,0 +1,102 @@ +# Generated for SonicDE from Fedora's kf6-modemmanager-qt.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-modemmanager fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-modemmanager +# Upstream KDE project: modemmanager-qt +%global oldname kf6-modemmanager-qt + +%global framework modemmanager-qt + +#Name: kf6-%%{framework} +Name: sonic-frameworks-modemmanager +Version: 6.29.0 +Release: 1%{?dist} +Summary: A Tier 1 KDE Frameworks module wrapping ModemManager DBus API +License: GPL-2.0-only AND GPL-3.0-only AND LGPL-2.1-only AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: gcc-c++ +BuildRequires: ModemManager-devel >= 1.0.0 +BuildRequires: qt6-qtbase-devel + +Requires: kf6-filesystem + +Provides: kf6-modemmanager-qt = %{version}-%{release} +Conflicts: kf6-modemmanager-qt < %{version}-%{release} + +%description +A Qt 6 library for ModemManager. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: ModemManager-devel +Requires: qt6-qtbase-devel +Provides: kf6-modemmanager-qt-devel = %{version}-%{release} +Conflicts: kf6-modemmanager-qt-devel < %{version}-%{release} + +%description devel +Qt 6 libraries and header files for developing applications +that use ModemManager. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-modemmanager-qt-doc = %{version}-%{release} +Conflicts: kf6-modemmanager-qt-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-modemmanager-qt-html = %{version}-%{release} +Conflicts: kf6-modemmanager-qt-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%files +%doc README README.md +%license LICENSES/* +%{_kf6_datadir}/qlogging-categories6/*.categories +%{_kf6_datadir}/qlogging-categories6/*.renamecategories +%{_kf6_libdir}/libKF6ModemManagerQt.so.* + +%files devel +%{_kf6_libdir}/libKF6ModemManagerQt.so +%{_kf6_libdir}/cmake/KF6ModemManagerQt/ +%{_kf6_includedir}/ModemManagerQt/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-networkmanager/sonic-frameworks-networkmanager.spec b/sonic-frameworks-networkmanager/sonic-frameworks-networkmanager.spec new file mode 100644 index 0000000..98b0592 --- /dev/null +++ b/sonic-frameworks-networkmanager/sonic-frameworks-networkmanager.spec @@ -0,0 +1,119 @@ +# Generated for SonicDE from Fedora's kf6-networkmanager-qt.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-networkmanager fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-networkmanager +# Upstream KDE project: networkmanager-qt +%global oldname kf6-networkmanager-qt + +%undefine __cmake_in_source_build + +%global framework networkmanager-qt + +#Name: kf6-%%{framework} +Name: sonic-frameworks-networkmanager +Version: 6.29.0 +Release: 1%{?dist} +Summary: A Tier 1 KDE Frameworks 6 module that wraps NetworkManager DBus API +License: LGPL-2.0-or-later AND GPL-2.0-only AND GPL-3.0-only AND LGPL-2.1-only AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) AND CC0-1.0 +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +# Compile Tools +BuildRequires: cmake +BuildRequires: gcc-c++ + +# KDE Frameworks +BuildRequires: sonic-frameworks-cmake-modules + +# Fedora +Requires: kf6-filesystem +BuildRequires: sonic-rpm-macros + +# Qt +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6Qml) + +# Other +BuildRequires: pkgconfig(libnm) +Recommends: NetworkManager + +Provides: kf6-networkmanager-qt = %{version}-%{release} +Conflicts: kf6-networkmanager-qt < %{version}-%{release} + +%description +A Tier 1 KDE Frameworks 6 Qt library for NetworkManager. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: cmake(Qt6Core) +Requires: pkgconfig(libnm) +Provides: kf6-networkmanager-qt-devel = %{version}-%{release} +Conflicts: kf6-networkmanager-qt-devel < %{version}-%{release} + +%description devel +Qt libraries and header files for developing applications +that use NetworkManager. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-networkmanager-qt-doc = %{version}-%{release} +Conflicts: kf6-networkmanager-qt-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-networkmanager-qt-html = %{version}-%{release} +Conflicts: kf6-networkmanager-qt-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%files +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/*categories +%{_kf6_libdir}/libKF6NetworkManagerQt.so.6 +%{_kf6_libdir}/libKF6NetworkManagerQt.so.%{version} +%{_kf6_libdir}/qt6/qml/org/kde/networkmanager/kde-qmlmodule.version +%{_kf6_libdir}/qt6/qml/org/kde/networkmanager/libnetworkmanagerqtqml.so +%{_kf6_libdir}/qt6/qml/org/kde/networkmanager/networkmanagerqtqml.qmltypes +%{_kf6_libdir}/qt6/qml/org/kde/networkmanager/qmldir + +%files devel +%{_kf6_includedir}/NetworkManagerQt/ +%{_kf6_libdir}/libKF6NetworkManagerQt.so +%{_kf6_libdir}/cmake/KF6NetworkManagerQt/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-notification-settings/sonic-frameworks-notification-settings.spec b/sonic-frameworks-notification-settings/sonic-frameworks-notification-settings.spec new file mode 100644 index 0000000..afb9e50 --- /dev/null +++ b/sonic-frameworks-notification-settings/sonic-frameworks-notification-settings.spec @@ -0,0 +1,113 @@ +# Generated for SonicDE from Fedora's kf6-knotifyconfig.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-notification-settings fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-notification-settings +# Upstream KDE project: knotifyconfig +%global oldname kf6-knotifyconfig + +%global framework knotifyconfig + +#Name: kf6-%%{framework} +Name: sonic-frameworks-notification-settings +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 3 module for KNotify configuration + +License: CC0-1.0 AND LGPL-2.0-only +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: cmake +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: gcc-c++ +BuildRequires: cmake(KF6Completion) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6ConfigWidgets) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: cmake(KF6XmlGui) +BuildRequires: sonic-rpm-macros +BuildRequires: pkgconfig(libcanberra) +BuildRequires: qt6-qtbase-devel +BuildRequires: cmake(Qt6TextToSpeech) +Requires: kf6-filesystem + +Provides: kf6-knotifyconfig = %{version}-%{release} +Conflicts: kf6-knotifyconfig < %{version}-%{release} + +%description +%{summary}. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: qt6-qtbase-devel +Provides: kf6-knotifyconfig-devel = %{version}-%{release} +Conflicts: kf6-knotifyconfig-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-knotifyconfig-doc = %{version}-%{release} +Conflicts: kf6-knotifyconfig-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-knotifyconfig-html = %{version}-%{release} +Conflicts: kf6-knotifyconfig-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang %{oldname} --all-name + +%files -f %{name}.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/*%{framework}.* +%{_kf6_libdir}/libKF6NotifyConfig.so.* + +%files devel +%{_kf6_includedir}/KNotifyConfig/ +%{_kf6_libdir}/libKF6NotifyConfig.so +%{_kf6_libdir}/cmake/KF6NotifyConfig/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-notifications/sonic-frameworks-notifications.spec b/sonic-frameworks-notifications/sonic-frameworks-notifications.spec new file mode 100644 index 0000000..10ffd44 --- /dev/null +++ b/sonic-frameworks-notifications/sonic-frameworks-notifications.spec @@ -0,0 +1,131 @@ +# Generated for SonicDE from Fedora's kf6-knotifications.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-notifications fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-notifications +# Upstream KDE project: knotifications +%global oldname kf6-knotifications + +%global framework knotifications + +#Name: kf6-%%{framework} +Name: sonic-frameworks-notifications +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 2 solution with abstraction for system notifications + +License: BSD-3-Clause AND CC0-1.0 AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-3.0-only AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(Qt6Gui) +BuildRequires: cmake(Qt6DBus) +BuildRequires: cmake(Qt6Qml) +BuildRequires: libcanberra-devel +BuildRequires: cmake(KF6Config) + +# required for pyside6 python bindings +BuildRequires: python3-devel +BuildRequires: python3-build +BuildRequires: python3-setuptools +BuildRequires: python3-wheel +BuildRequires: clang-devel +BuildRequires: cmake(Shiboken6) +BuildRequires: cmake(PySide6) + +Provides: kf6-knotifications = %{version}-%{release} +Conflicts: kf6-knotifications < %{version}-%{release} + +%description +KDE Frameworks 6 Tier 3 solution with abstraction for system +notifications. + +%package -n python3-%{name} +Summary: Qt for Python bindings for %{name} +Provides: python3-kf6-knotifications = %{version}-%{release} +Conflicts: python3-kf6-knotifications < %{version}-%{release} + +%description -n python3-%{name} +The package contains the pyside6 bindings library for %{name} + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: qt6-qtbase-devel +Provides: kf6-knotifications-devel = %{version}-%{release} +Conflicts: kf6-knotifications-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-knotifications-doc = %{version}-%{release} +Conflicts: kf6-knotifications-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-knotifications-html = %{version}-%{release} +Conflicts: kf6-knotifications-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 +mkdir -p %{buildroot}/%{_kf6_datadir}/knotifications6 + +%files +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/%{framework}.* +%{_kf6_libdir}/libKF6Notifications.so.* +%dir %{_kf6_datadir}/knotifications6 +%{_libdir}/qt6/qml/org/kde/notification/kde-qmlmodule.version +%{_libdir}/qt6/qml/org/kde/notification/knotificationqmlplugin.qmltypes +%{_libdir}/qt6/qml/org/kde/notification/libknotificationqmlplugin.so +%{_libdir}/qt6/qml/org/kde/notification/qmldir + +%files -n python3-%{name} +%{python3_sitearch}/KNotifications.cpython-%{python3_version_nodots}*.so + +%files devel +%{_kf6_includedir}/KNotifications/ +%{_kf6_libdir}/libKF6Notifications.so +%{_kf6_libdir}/cmake/KF6Notifications/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-open-collab/sonic-frameworks-open-collab.spec b/sonic-frameworks-open-collab/sonic-frameworks-open-collab.spec new file mode 100644 index 0000000..afdd6e5 --- /dev/null +++ b/sonic-frameworks-open-collab/sonic-frameworks-open-collab.spec @@ -0,0 +1,102 @@ +# Generated for SonicDE from Fedora's kf6-attica.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-open-collab fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-open-collab +# Upstream KDE project: attica +%global oldname kf6-attica + +%global framework attica + +#Name: kf6-%%{framework} +Name: sonic-frameworks-open-collab +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks Tier 1 Addon with Open Collaboration Services API +License: CC0-1.0 AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-3.0-only AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: sonic-rpm-macros +BuildRequires: qt6-qtbase-devel + + +Requires: kf6-filesystem + +Provides: kf6-attica = %{version}-%{release} +Conflicts: kf6-attica < %{version}-%{release} + +%description +Attica is a Qt library that implements the Open Collaboration Services +API version 1.4. + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Requires: qt6-qtbase-devel +Provides: kf6-attica-devel = %{version}-%{release} +Conflicts: kf6-attica-devel < %{version}-%{release} + +%description devel +%{summary}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-attica-doc = %{version}-%{release} +Conflicts: kf6-attica-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-attica-html = %{version}-%{release} +Conflicts: kf6-attica-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%files +%doc AUTHORS ChangeLog README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/%{framework}.* +%{_kf6_libdir}/libKF6Attica.so.* + +%files devel +%{_kf6_libdir}/cmake/KF6Attica/ +%{_kf6_includedir}/Attica/ +%{_kf6_libdir}/libKF6Attica.so +%{_kf6_libdir}/pkgconfig/KF6Attica.pc +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-package/sonic-frameworks-package.spec b/sonic-frameworks-package/sonic-frameworks-package.spec new file mode 100644 index 0000000..a911e6a --- /dev/null +++ b/sonic-frameworks-package/sonic-frameworks-package.spec @@ -0,0 +1,115 @@ +# Generated for SonicDE from Fedora's kf6-kpackage.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-package fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-package +# Upstream KDE project: kpackage +%global oldname kf6-kpackage + +%global framework kpackage + +#Name: kf6-%%{framework} +Name: sonic-frameworks-package +Version: 6.29.0.1 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 2 library to load and install packages as plugins + +License: CC0-1.0 AND GPL-2.0-or-later AND LGPL-2.0-or-later +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: sonic-rpm-macros +BuildRequires: sonic-frameworks-archive-devel +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6DocTools) +BuildRequires: qt6-qtbase-devel +Requires: kf6-filesystem + +Provides: kf6-kpackage = %{version}-%{release} +Conflicts: kf6-kpackage < %{version}-%{release} + +%description +KDE Frameworks 6 Tier 2 library to load and install non-binary packages as +if they were plugins. + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Provides: kf6-kpackage-devel = %{version}-%{release} +Conflicts: kf6-kpackage-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kpackage-doc = %{version}-%{release} +Conflicts: kf6-kpackage-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kpackage-html = %{version}-%{release} +Conflicts: kf6-kpackage-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang %{oldname} --all-name --with-man + +# create/own dirs +mkdir -p %{buildroot}%{_kf6_qtplugindir}/kpackage/packagestructure/ +mkdir -p %{buildroot}%{_kf6_datadir}/kpackage/ + +%files -f %{name}.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/%{framework}.* +%{_kf6_libdir}/libKF6Package.so.* +%{_kf6_qtplugindir}/kpackage/ +%{_kf6_datadir}/kpackage/ +%{_kf6_bindir}/kpackagetool6 +%{_mandir}/man1/kpackagetool6.1* + +%files devel +%{_kf6_includedir}/KPackage/ +%{_kf6_libdir}/libKF6Package.so +%{_kf6_libdir}/cmake/KF6Package/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0.1-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-progress-ui/sonic-frameworks-progress-ui.spec b/sonic-frameworks-progress-ui/sonic-frameworks-progress-ui.spec new file mode 100644 index 0000000..55d97da --- /dev/null +++ b/sonic-frameworks-progress-ui/sonic-frameworks-progress-ui.spec @@ -0,0 +1,132 @@ +# Generated for SonicDE from Fedora's kf6-kjobwidgets.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-progress-ui fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-progress-ui +# Upstream KDE project: kjobwidgets +%global oldname kf6-kjobwidgets + +%global framework kjobwidgets + +#Name: kf6-%%{framework} +Name: sonic-frameworks-progress-ui +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 2 addon for KJobs +# The following are in the LICENSES folder, but go unused: LGPL-3.0-only, LicenseRef-KDE-Accepted-LGPL +License: CC0-1.0 AND LGPL-2.0-only AND LGPL-2.0-or-later +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: sonic-rpm-macros +BuildRequires: libX11-devel +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qttools-devel +BuildRequires: qt6-qtbase-private-devel +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: pkgconfig(shiboken6) +BuildRequires: pkgconfig(pyside6) +BuildRequires: python3-devel +BuildRequires: python3-build +BuildRequires: python3-setuptools +BuildRequires: python3-wheel +BuildRequires: clang-devel + +BuildRequires: pkgconfig(xkbcommon) +Requires: kf6-filesystem + +Provides: kf6-kjobwidgets = %{version}-%{release} +Conflicts: kf6-kjobwidgets < %{version}-%{release} + +%description +%{summary}. + +%package -n python3-%{name} +Summary: Qt for Python bindings for %{name} +Provides: python3-kf6-kjobwidgets = %{version}-%{release} +Conflicts: python3-kf6-kjobwidgets < %{version}-%{release} + +%description -n python3-%{name} +The package contains the pyside6 bindings library for %{name} + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: qt6-qtbase-devel +Requires: cmake(KF6CoreAddons) +Provides: kf6-kjobwidgets-devel = %{version}-%{release} +Conflicts: kf6-kjobwidgets-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kjobwidgets-doc = %{version}-%{release} +Conflicts: kf6-kjobwidgets-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kjobwidgets-html = %{version}-%{release} +Conflicts: kf6-kjobwidgets-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang_kf6 kjobwidgets6_qt + +%files -f kjobwidgets6_qt.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/%{framework}.* +%{_kf6_libdir}/libKF6JobWidgets.so.* + +%files -n python3-%{name} +%{python3_sitearch}/KJobWidgets.cpython-%{python3_version_nodots}*.so + +%files devel +%{_kf6_includedir}/KJobWidgets/ +%{_kf6_libdir}/libKF6JobWidgets.so +%{_kf6_libdir}/cmake/KF6JobWidgets/ +%{_kf6_datadir}/dbus-1/interfaces/*.xml +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-pseudo-terminal/sonic-frameworks-pseudo-terminal.spec b/sonic-frameworks-pseudo-terminal/sonic-frameworks-pseudo-terminal.spec new file mode 100644 index 0000000..9c8a30e --- /dev/null +++ b/sonic-frameworks-pseudo-terminal/sonic-frameworks-pseudo-terminal.spec @@ -0,0 +1,111 @@ +# Generated for SonicDE from Fedora's kf6-kpty.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-pseudo-terminal fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-pseudo-terminal +# Upstream KDE project: kpty +%global oldname kf6-kpty + +%global framework kpty + +#Name: kf6-%%{framework} +Name: sonic-frameworks-pseudo-terminal +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 2 module providing Pty abstraction + +License: BSD-3-Clause AND CC0-1.0 AND GPL-2.0-or-later AND LGPL-2.0-or-later +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: libutempter-devel +BuildRequires: qt6-qtbase-devel + +Requires: kf6-filesystem +# runtime calls %%_libexexdir/utempter/utempter +Requires: libutempter + +Provides: kf6-kpty = %{version}-%{release} +Conflicts: kf6-kpty < %{version}-%{release} + +%description +KDE Frameworks 6 tier 2 module providing Pty abstraction. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: cmake(KF6CoreAddons) +Provides: kf6-kpty-devel = %{version}-%{release} +Conflicts: kf6-kpty-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kpty-doc = %{version}-%{release} +Conflicts: kf6-kpty-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kpty-html = %{version}-%{release} +Conflicts: kf6-kpty-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +# If seems to, for some reason, not find utempter without the following: +%cmake_kf6 -DUTEMPTER_EXECUTABLE:PATH=/usr/libexec/utempter/utempter +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang %{oldname} --all-name --with-man + +%files -f %{name}.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/%{framework}.* +%{_kf6_libdir}/libKF6Pty.so.6 +%{_kf6_libdir}/libKF6Pty.so.%{version} + +%files devel +%{_kf6_includedir}/KPty/ +%{_kf6_libdir}/libKF6Pty.so +%{_kf6_libdir}/cmake/KF6Pty/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-purpose/sonic-frameworks-purpose.spec b/sonic-frameworks-purpose/sonic-frameworks-purpose.spec new file mode 100644 index 0000000..e2582d8 --- /dev/null +++ b/sonic-frameworks-purpose/sonic-frameworks-purpose.spec @@ -0,0 +1,144 @@ +# Generated for SonicDE from Fedora's kf6-purpose.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-purpose fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-purpose +# Upstream KDE project: purpose +%global oldname kf6-purpose + +%global framework purpose + +#Name: kf6-purpose +Name: sonic-frameworks-purpose +Summary: Framework for providing abstractions to get the developer's purposes fulfilled +Version: 6.29.0 +Release: 1%{?dist} + +License: CC0-1.0 AND GPL-2.0-or-later AND LGPL-2.0-or-later AND LGPL-2.1-or-later +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: http://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: http://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +# upstream patches + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: gcc-c++ +BuildRequires: gettext +BuildRequires: intltool +BuildRequires: cmake +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6Kirigami2) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KAccounts6) +BuildRequires: pkgconfig(Qt6Network) +BuildRequires: pkgconfig(Qt6Qml) + +BuildRequires: accounts-qml-module-qt6 +Requires: accounts-qml-module-qt6 +BuildRequires: cmake(KF6Declarative) +Requires: sonic-frameworks-qml-bridge +BuildRequires: cmake(KF6Prison) +Requires: sonic-frameworks-barcode +BuildRequires: sonic-frameworks-data-models +Requires: qt6qml(org.kde.kitemmodels) + + +Requires: hicolor-icon-theme +Requires: sonic-frameworks-bluetooth >= %{version} + +Provides: kf6-purpose = %{version}-%{release} +Conflicts: kf6-purpose < %{version}-%{release} + +%description +Purpose offers the possibility to create integrate services and actions on +any application without having to implement them specifically. Purpose will +offer them mechanisms to list the different alternatives to execute given the +requested action type and will facilitate components so that all the plugins +can receive all the information they need. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: cmake(KF6CoreAddons) +Provides: kf6-purpose-devel = %{version}-%{release} +Conflicts: kf6-purpose-devel < %{version}-%{release} + +%description devel +%{summary}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-purpose-doc = %{version}-%{release} +Conflicts: kf6-purpose-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-purpose-html = %{version}-%{release} +Conflicts: kf6-purpose-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang %{oldname} --all-name + +%files -f %{name}.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/%{framework}.* +%{_kf6_libdir}/libKF6Purpose.so.6 +%{_kf6_libdir}/libKF6Purpose.so.%{version} +%{_kf6_libdir}/libKF6PurposeWidgets.so.6 +%{_kf6_libdir}/libKF6PurposeWidgets.so.%{version} +%{_kf6_libexecdir}/purposeprocess +%{_kf6_datadir}/kf6/purpose/ +%{_kf6_datadir}/accounts/services/kde/*.service +%{_kf6_plugindir}/purpose/ +%dir %{_kf6_plugindir}/kfileitemaction/ +%{_kf6_plugindir}/kfileitemaction/sharefileitemaction.so +%{_kf6_qmldir}/org/kde/purpose/ +%{_datadir}/icons/hicolor/*/apps/*-purpose6.* + +%files devel +%{_kf6_libdir}/libKF6Purpose.so +%{_kf6_libdir}/libKF6PurposeWidgets.so +%{_kf6_includedir}/Purpose/ +%{_kf6_includedir}/PurposeWidgets/ +%{_kf6_libdir}/cmake/KF6Purpose/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-qml-bridge/sonic-frameworks-qml-bridge.spec b/sonic-frameworks-qml-bridge/sonic-frameworks-qml-bridge.spec new file mode 100644 index 0000000..5014248 --- /dev/null +++ b/sonic-frameworks-qml-bridge/sonic-frameworks-qml-bridge.spec @@ -0,0 +1,127 @@ +# Generated for SonicDE from Fedora's kf6-kdeclarative.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-qml-bridge fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-qml-bridge +# Upstream KDE project: kdeclarative +%global oldname kf6-kdeclarative + +%global framework kdeclarative + +#Name: kf6-%%{framework} +Name: sonic-frameworks-qml-bridge +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 3 addon for Qt declarative + +License: CC0-1.0 AND GPL-2.0-only AND GPL-3.0-only AND LGPL-2.0-or-later AND LGPL-2.1-or-later AND (GPL-2.0-only OR GPL-3.0-only) AND MIT +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: cmake +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: gcc-c++ +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6GlobalAccel) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6Package) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(Qt6ShaderTools) +BuildRequires: libepoxy-devel +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtdeclarative-devel +Requires: kf6-filesystem + +Provides: kf6-kdeclarative = %{version}-%{release} +Conflicts: kf6-kdeclarative < %{version}-%{release} + +%description +KDE Frameworks 6 Tier 3 addon for Qt declarative + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: cmake(KF6Config) +Requires: cmake(KF6Package) +Requires: qt6-qtdeclarative-devel +Provides: kf6-kdeclarative-devel = %{version}-%{release} +Conflicts: kf6-kdeclarative-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kdeclarative-doc = %{version}-%{release} +Conflicts: kf6-kdeclarative-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kdeclarative-html = %{version}-%{release} +Conflicts: kf6-kdeclarative-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang %{oldname} --all-name + +%files -f %{name}.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_libdir}/libKF6CalendarEvents.so.* +%dir %{_kf6_qmldir}/org/ +%dir %{_kf6_qmldir}/org/kde/ +%{_kf6_qmldir}/org/kde/draganddrop/ +%{_kf6_qmldir}/org/kde/graphicaleffects/ +%{_kf6_qmldir}/org/kde/kquickcontrols/ +%{_kf6_qmldir}/org/kde/private/kquickcontrols/ +%{_kf6_qmldir}/org/kde/kquickcontrolsaddons/ +%{_kf6_libdir}/libkquickcontrolsprivate.so.0 +%{_kf6_libdir}/libkquickcontrolsprivate.so.%{version} + +%files devel +%{_kf6_includedir}/KDeclarative/ +%{_kf6_libdir}/libKF6CalendarEvents.so +%{_kf6_libdir}/cmake/KF6Declarative/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-qt-integration/sonic-frameworks-qt-integration.spec b/sonic-frameworks-qt-integration/sonic-frameworks-qt-integration.spec new file mode 100644 index 0000000..f6a5b04 --- /dev/null +++ b/sonic-frameworks-qt-integration/sonic-frameworks-qt-integration.spec @@ -0,0 +1,134 @@ +# Generated for SonicDE from Fedora's kf6-frameworkintegration.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-qt-integration fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-qt-integration +# Upstream KDE project: frameworkintegration +%global oldname kf6-frameworkintegration + +%global framework frameworkintegration + +#Name: kf6-%%{framework} +Name: sonic-frameworks-qt-integration +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 4 workspace and cross-framework integration plugins +License: CC0-1.0 AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-3.0-only AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: http://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: http://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: cmake(KF6NewStuff) +BuildRequires: cmake(KF6Package) +BuildRequires: sonic-rpm-macros +BuildRequires: libXcursor-devel +BuildRequires: qt6-qtbase-devel + +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6ConfigWidgets) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: cmake(AppStreamQt) >= 1.0 +BuildRequires: cmake(packagekitqt6) +BuildRequires: cmake(KF6ColorScheme) +Requires: kf6-filesystem + +Provides: kf6-frameworkintegration = %{version}-%{release} +Conflicts: kf6-frameworkintegration < %{version}-%{release} + +%description +Framework Integration is a set of plugins responsible for better integration of +Qt applications when running on a KDE Plasma workspace. + +Applications do not need to link to this directly. + +%package libs +Summary: Runtime libraries for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Provides: kf6-frameworkintegration-libs = %{version}-%{release} +Conflicts: kf6-frameworkintegration-libs < %{version}-%{release} + +%description libs +%{summary}. + +%package devel +Summary: Development files for %{name} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: cmake(KF6IconThemes) +Requires: cmake(KF6ConfigWidgets) + +Provides: kf6-frameworkintegration-devel = %{version}-%{release} +Conflicts: kf6-frameworkintegration-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains files to develop for %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-frameworkintegration-doc = %{version}-%{release} +Conflicts: kf6-frameworkintegration-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-frameworkintegration-html = %{version}-%{release} +Conflicts: kf6-frameworkintegration-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%files +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/knotifications6/plasma_workspace.notifyrc +%dir %{_kf6_libexecdir}/kpackagehandlers +%{_kf6_libexecdir}/kpackagehandlers/knshandler + +%files libs +%{_kf6_libdir}/libKF6Style.so.* +%{_kf6_plugindir}/FrameworkIntegrationPlugin.so +%{_kf6_libexecdir}/kpackagehandlers/appstreamhandler + +%files devel +%{_kf6_includedir}/FrameworkIntegration/ +%{_kf6_includedir}/KStyle/ +%{_kf6_libdir}/libKF6Style.so +%{_kf6_libdir}/cmake/KF6FrameworkIntegration/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-quick-charts/sonic-frameworks-quick-charts.spec b/sonic-frameworks-quick-charts/sonic-frameworks-quick-charts.spec new file mode 100644 index 0000000..23753ba --- /dev/null +++ b/sonic-frameworks-quick-charts/sonic-frameworks-quick-charts.spec @@ -0,0 +1,111 @@ +# Generated for SonicDE from Fedora's kf6-kquickcharts.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-quick-charts fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-quick-charts +# Upstream KDE project: kquickcharts +%global oldname kf6-kquickcharts + +%global framework kquickcharts + +#Name: kf6-%%{framework} +Name: sonic-frameworks-quick-charts +Summary: A QtQuick module providing high-performance charts +Version: 6.29.0 +Release: 1%{?dist} + +License: BSD-2-Clause AND CC0-1.0 AND LGPL-2.1-only AND LGPL-3.0-only AND MIT +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: cmake(Qt6Qml) +BuildRequires: cmake(Qt6Quick) +BuildRequires: cmake(Qt6QuickControls2) +BuildRequires: cmake(Qt6ShaderTools) +BuildRequires: make +BuildRequires: pkgconfig(xkbcommon) + +Provides: kf6-kquickcharts = %{version}-%{release} +Conflicts: kf6-kquickcharts < %{version}-%{release} + +%description +The Quick Charts module provides a set of charts that can be used from QtQuick +applications. They are intended to be used for both simple display of data as +well as continuous display of high-volume data (often referred to as plotters). +The charts use a system called distance fields for their accelerated rendering, +which provides ways of using the GPU for rendering 2D shapes without loss of +quality. + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Provides: kf6-kquickcharts-devel = %{version}-%{release} +Conflicts: kf6-kquickcharts-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kquickcharts-doc = %{version}-%{release} +Conflicts: kf6-kquickcharts-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kquickcharts-html = %{version}-%{release} +Conflicts: kf6-kquickcharts-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%files +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/%{framework}.* +%{_kf6_qmldir}/org/kde/quickcharts/ +%{_libdir}/libQuickCharts.so.* +%{_libdir}/libQuickChartsControls.so* + +%files devel +%{_kf6_libdir}/cmake/KF6QuickCharts/ +%{_libdir}/libQuickCharts.so +%{_libdir}/libQuickChartsControls.so +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-quick-desktop-style/sonic-frameworks-quick-desktop-style.spec b/sonic-frameworks-quick-desktop-style/sonic-frameworks-quick-desktop-style.spec new file mode 100644 index 0000000..dd581ff --- /dev/null +++ b/sonic-frameworks-quick-desktop-style/sonic-frameworks-quick-desktop-style.spec @@ -0,0 +1,74 @@ +# Generated for SonicDE from Fedora's kf6-qqc2-desktop-style.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-quick-desktop-style fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-quick-desktop-style +# Upstream KDE project: qqc2-desktop-style +%global oldname kf6-qqc2-desktop-style + +%global framework qqc2-desktop-style + +#Name: kf6-%%{framework} +Name: sonic-frameworks-quick-desktop-style +Version: 6.29.0 +Release: 1%{?dist} +Summary: QtQuickControls2 style for consistency between QWidget and QML apps +License: CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.0-or-later AND LGPL-2.1-or-later AND LGPL-3.0-only AND LicenseRef-KFQF-Accepted-GPL +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: http://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: http://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(KF6ConfigWidgets) +BuildRequires: cmake(KF6Kirigami2) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: cmake(KF6ColorScheme) +BuildRequires: pkgconfig(Qt6Gui) +BuildRequires: pkgconfig(Qt6Quick) +BuildRequires: pkgconfig(Qt6Widgets) +BuildRequires: cmake(KF6Sonnet) +BuildRequires: pkgconfig(xkbcommon) + +# Doesn't need qtbase-private-devel, but private stuff from qtdeclarative +# so we still need to rebuild it +#BuildRequires: qt6-qtbase-private-devel + +Requires: sonic-frameworks-spell-check + +Provides: kf6-qqc2-desktop-style = %{version}-%{release} +Conflicts: kf6-qqc2-desktop-style < %{version}-%{release} + +%description +This is a style for QtQuickControls 2 that uses QWidget's QStyle for +painting, making possible to achieve an higher degree of consistency +between QWidget-based and QML-based apps. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build + +%install +%cmake_install +%find_lang %{oldname} --all-name --with-man --with-qt + +%files -f %{name}.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_libdir}/cmake/KF6QQC2DesktopStyle/ +%{_qt6_qmldir}/org/kde/desktop/ +%{_qt6_qmldir}/org/kde/qqc2desktopstyle/ +%{_kf6_plugindir}/kirigami/platform/org.kde.desktop.so + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-quick-silver-style/sonic-frameworks-quick-silver-style.spec b/sonic-frameworks-quick-silver-style/sonic-frameworks-quick-silver-style.spec new file mode 100644 index 0000000..a364bbb --- /dev/null +++ b/sonic-frameworks-quick-silver-style/sonic-frameworks-quick-silver-style.spec @@ -0,0 +1,73 @@ +# Generated for SonicDE from Fedora's qqc2-breeze-style.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-quick-silver-style fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-quick-silver-style +# Upstream KDE project: qqc2-breeze-style +%global oldname qqc2-breeze-style + +#Name: qqc2-breeze-style +Name: sonic-frameworks-quick-silver-style +Version: 6.7.4 +Release: 1%{?dist} +Summary: QtQuickControls2 breeze style + +License: CC0-1.0 and GPL-2.0-or-later AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +## upstream patches + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros + +BuildRequires: cmake(KF6ColorScheme) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: cmake(KF6KirigamiPlatform) +BuildRequires: cmake(KF6QuickCharts) + +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtdeclarative-devel + +Requires: sonic-frameworks-quick-charts + + +Provides: qqc2-breeze-style = %{version}-%{release} +Conflicts: qqc2-breeze-style < %{version}-%{release} + +%description +This is a pure Qt Quick/Kirigami Qt Quick Controls style. + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build + + +%install +%cmake_install + + +%files +%doc README.md +%license LICENSES/*.txt +%{_kf6_plugindir}/kirigami/platform/org.kde.breeze.so +%{_qt6_qmldir}/org/kde/breeze/ +%{_kf6_libdir}/cmake/QQC2BreezeStyle/ + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-quick-ui-addons/sonic-frameworks-quick-ui-addons.spec b/sonic-frameworks-quick-ui-addons/sonic-frameworks-quick-ui-addons.spec new file mode 100644 index 0000000..c837e86 --- /dev/null +++ b/sonic-frameworks-quick-ui-addons/sonic-frameworks-quick-ui-addons.spec @@ -0,0 +1,126 @@ +# Generated for SonicDE from Fedora's kf6-kirigami-addons.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-quick-ui-addons fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-quick-ui-addons +# Upstream KDE project: kirigami-addons +%global oldname kf6-kirigami-addons + +%global framework kirigami-addons + +#Name: kf6-%%{framework} +Name: sonic-frameworks-quick-ui-addons +Version: 1.13.1 +Release: 1%{?dist} +License: BSD-2-Clause AND CC-BY-SA-4.0 AND CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) AND LicenseRef-KFQF-Accepted-GPL +Summary: Convergent visual components ("widgets") for Kirigami-based applications +Url: https://invent.kde.org/libraries/%{framework} +#Source: https://download.kde.org/stable/%%{framework}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz + +BuildRequires: cmake +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: gcc-c++ +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6GlobalAccel) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: cmake(KF6Kirigami2) +BuildRequires: cmake(KF6Svg) +BuildRequires: cmake(KF6ColorScheme) +BuildRequires: cmake(KF6Crash) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: cmake(Qt6) +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6Quick) +BuildRequires: cmake(Qt6QuickControls2) + +# Doesn't need qtbase-private-devel, but private stuff from qtdeclarative +# so we still need to rebuild it +#BuildRequires: qt6-qtbase-private-devel + +Requires: kf6-filesystem + +### Renamed from kf6-kirigami2-addons (which was at epoch 1) +Obsoletes: kf6-kirigami2-addons < 1:0.11.76-5 +Provides: kf6-kirigami2-addons = 1:%{version}-%{release} +Provides: kf6-kirigami2-addons%{?_isa} = 1:%{version}-%{release} + +### Merged subpackages back into main package +# The old name +Obsoletes: kf6-kirigami2-addons-dateandtime < 1:0.11.76-5 +Provides: kf6-kirigami2-addons-dateandtime = 1:%{version}-%{release} +Provides: kf6-kirigami2-addons-dateandtime%{?_isa} = 1:%{version}-%{release} + +Obsoletes: kf6-kirigami2-addons-treeview < 1:0.11.76-5 +Provides: kf6-kirigami2-addons-treeview = 1:%{version}-%{release} +Provides: kf6-kirigami2-addons-treeview%{?_isa} = 1:%{version}-%{release} + +# The new name +Obsoletes: kf6-kirigami-addons-dateandtime < 0.11.76-5 +Provides: kf6-kirigami-addons-dateandtime = %{version}-%{release} +Provides: kf6-kirigami-addons-dateandtime%{?_isa} = %{version}-%{release} + +Obsoletes: kf6-kirigami-addons-treeview < 0.11.76-5 +Provides: kf6-kirigami-addons-treeview = %{version}-%{release} +Provides: kf6-kirigami-addons-treeview%{?_isa} = %{version}-%{release} + +Provides: kf6-kirigami-addons = %{version}-%{release} +Conflicts: kf6-kirigami-addons < %{version}-%{release} + +%description +A set of "widgets" i.e visual end user components along with a +code to support them. Components are usable by both touch and +desktop experiences providing a native experience on both, and +look native with any QQC2 style (qqc2-desktop-theme, Material +or Plasma). + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Conflicts: sonic-frameworks-quick-ui-addons < 1.4.0 +Provides: kf6-kirigami-addons-devel = %{version}-%{release} +Conflicts: kf6-kirigami-addons-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains CMake definitions, libraries +and header files for developing applications that use %{name}. + +%prep +%autosetup -n %{reponame}-%{version} + +%build +%cmake_kf6 -DBUILD_WITH_QT6=ON +%cmake_build + +%install +%cmake_install +%find_lang %{orig_name}6 --all-name + +%files -f %{orig_name}6.lang +%doc README.md +%license LICENSES/ +%dir %{_kf6_qmldir}/org/kde +%{_kf6_qmldir}/org/kde/kirigamiaddons +%{_kf6_libdir}/libKirigamiAddonsStatefulApp.so.{6,%{version}} +%{_kf6_libdir}/libKirigamiApp.so.%{version} +%{_kf6_libdir}/libKirigamiApp.so.6 +%{_kf6_libdir}/libKirigamiAddonsComponents.so.%{version} +%{_kf6_libdir}/libKirigamiAddonsComponents.so.6 + +%files devel +%{_kf6_libdir}/libKirigamiAddonsComponents.so +%{_kf6_libdir}/libKirigamiApp.so +%{_includedir}/KirigamiAddons/ +%{_kf6_libdir}/cmake/KF6KirigamiAddons +%{_kf6_libdir}/libKirigamiAddonsStatefulApp.so +%{_includedir}/KirigamiAddonsStatefulApp/ +%{_kf6_datadir}/kdevappwizard/templates/kirigamiaddons6.tar.bz2 +%{_kf6_datadir}/kdevappwizard/templates/librarymanager6.tar.bz2 + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 1.13.1-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-quick-ui/sonic-frameworks-quick-ui.spec b/sonic-frameworks-quick-ui/sonic-frameworks-quick-ui.spec new file mode 100644 index 0000000..b893732 --- /dev/null +++ b/sonic-frameworks-quick-ui/sonic-frameworks-quick-ui.spec @@ -0,0 +1,158 @@ +# Generated for SonicDE from Fedora's kf6-kirigami.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-quick-ui fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-quick-ui +# Upstream KDE project: kirigami +%global oldname kf6-kirigami + +%global framework kirigami + +#Name: kf6-%%{framework} +Name: sonic-frameworks-quick-ui +Version: 6.29.0.2 +Release: 1%{?dist} +Summary: QtQuick plugins to build user interfaces based on the KDE UX guidelines +License: BSD-3-Clause AND CC0-1.0 AND FSFAP AND GPL-2.0-or-later AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only AND (LGPL-2.1-only OR LGPL-3.0-only) AND MIT +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +# -- UPSTREAM -- + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: make +BuildRequires: qt6-linguist +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtdeclarative-devel +BuildRequires: qt6-qtsvg-devel +BuildRequires: qt6-qtbase-private-devel +BuildRequires: cmake(Qt6Quick) +BuildRequires: cmake(Qt6ShaderTools) + +# Renamed from kf6-kirigami2 +Obsoletes: kf6-kirigami2 < 5.246.0 +Provides: kf6-kirigami2 = %{version}-%{release} +Provides: kf6-kirigami2%{?_isa} = %{version}-%{release} + +Provides: kf6-kirigami = %{version}-%{release} +Conflicts: kf6-kirigami < %{version}-%{release} + +%description +%{summary}. + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Obsoletes: kf6-kirigami2-devel < 5.246.0 +Provides: kf6-kirigami2-devel = %{version}-%{release} +Provides: kf6-kirigami2-devel%{?_isa} = %{version}-%{release} +Provides: kf6-kirigami-devel = %{version}-%{release} +Conflicts: kf6-kirigami-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kirigami-doc = %{version}-%{release} +Conflicts: kf6-kirigami-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kirigami-html = %{version}-%{release} +Conflicts: kf6-kirigami-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 +%find_lang_kf6 libkirigami6_qt + +%files -f libkirigami6_qt.lang +%doc README.md +%dir %{_kf6_qmldir}/org/ +%dir %{_kf6_qmldir}/org/kde/ +%license LICENSES/*.txt +%{_kf6_qmldir}/org/kde/kirigami +%{_datadir}/qlogging-categories6/kirigami.categories +%{_kf6_libdir}/libKirigami.so.6 +%{_kf6_libdir}/libKirigami.so.%{version} +%{_kf6_libdir}/libKirigamiDelegates.so.6 +%{_kf6_libdir}/libKirigamiDelegates.so.%{version} +%{_kf6_libdir}/libKirigamiDialogs.so.6 +%{_kf6_libdir}/libKirigamiDialogs.so.%{version} +%{_kf6_libdir}/libKirigamiLayouts.so.6 +%{_kf6_libdir}/libKirigamiLayouts.so.%{version} +%{_kf6_libdir}/libKirigamiLayoutsPrivate.so.6 +%{_kf6_libdir}/libKirigamiLayoutsPrivate.so.%{version} +%{_kf6_libdir}/libKirigamiPlatform.so.6 +%{_kf6_libdir}/libKirigamiPlatform.so.%{version} +%{_kf6_libdir}/libKirigamiPrimitives.so.6 +%{_kf6_libdir}/libKirigamiPrimitives.so.%{version} +%{_kf6_libdir}/libKirigamiPrivate.so.6 +%{_kf6_libdir}/libKirigamiPrivate.so.%{version} +%{_kf6_libdir}/libKirigamiPolyfill.so.6 +%{_kf6_libdir}/libKirigamiPolyfill.so.%{version} +%{_kf6_libdir}/libKirigamiTemplates.so.6 +%{_kf6_libdir}/libKirigamiTemplates.so.%{version} +%{_kf6_libdir}/libKirigamiControls.so.6 +%{_kf6_libdir}/libKirigamiControls.so.%{version} +%{_kf6_libdir}/libKirigamiForms*.so.6 +%{_kf6_libdir}/libKirigamiForms*.so.%{version} + +%files devel +%dir %{_kf6_datadir}/kdevappwizard/ +%dir %{_kf6_datadir}/kdevappwizard/templates/ +%{_kf6_datadir}/kdevappwizard/templates/kirigami6.tar.bz2 +%{_kf6_includedir}/Kirigami/ +%{_kf6_libdir}/cmake/KF6Kirigami{,2}/ +%{_kf6_libdir}/cmake/KF6KirigamiPlatform/ +%{_kf6_libdir}/libKirigami.so +%{_kf6_libdir}/libKirigamiDelegates.so +%{_kf6_libdir}/libKirigamiDialogs.so +%{_kf6_libdir}/libKirigamiLayouts.so +%{_kf6_libdir}/libKirigamiLayoutsPrivate.so +%{_kf6_libdir}/libKirigamiPlatform.so +%{_kf6_libdir}/libKirigamiPrimitives.so +%{_kf6_libdir}/libKirigamiPrivate.so +%{_kf6_libdir}/libKirigamiPolyfill.so +%{_kf6_libdir}/libKirigamiTemplates.so +%{_kf6_libdir}/libKirigamiControls.so +%{_kf6_libdir}/libKirigamiForms.so +%{_kf6_libdir}/libKirigamiForms*.so +%{_libdir}/qt6/metatypes/qt6kirigamiplatform*.json +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0.2-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-root-shell/sonic-frameworks-root-shell.spec b/sonic-frameworks-root-shell/sonic-frameworks-root-shell.spec new file mode 100644 index 0000000..63f51d1 --- /dev/null +++ b/sonic-frameworks-root-shell/sonic-frameworks-root-shell.spec @@ -0,0 +1,117 @@ +# Generated for SonicDE from Fedora's kf6-kdesu.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-root-shell fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-root-shell +# Upstream KDE project: kdesu +%global oldname kf6-kdesu + +%global framework kdesu + +#Name: kf6-%%{framework} +Name: sonic-frameworks-root-shell +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 3 integration with su + +License: CC0-1.0 AND GPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-3.0-only AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6Service) +BuildRequires: cmake(KF6Pty) +#BuildRequires: libX11-devel +BuildRequires: qt6-qtbase-devel +Requires: kf6-filesystem + +%if 0%{?rhel} || 0%{?fedora} >= 42 +Requires: sudo +%endif + +Provides: kf6-kdesu = %{version}-%{release} +Conflicts: kf6-kdesu < %{version}-%{release} + +%description + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: cmake(KF6Pty) +Provides: kf6-kdesu-devel = %{version}-%{release} +Conflicts: kf6-kdesu-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kdesu-doc = %{version}-%{release} +Conflicts: kf6-kdesu-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kdesu-html = %{version}-%{release} +Conflicts: kf6-kdesu-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 \ +%if 0%{?rhel} || 0%{?fedora} >= 42 + -DKDESU_USE_SUDO_DEFAULT:BOOL=TRUE +%endif +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang kdesu6_qt --all-name + +%files -f kdesu6_qt.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/* +%{_kf6_libdir}/libKF6Su.so.* +%{_kf6_libexecdir}/kdesu_stub +%{_kf6_libexecdir}/kdesud + +%files devel +%{_kf6_includedir}/KDESu/ +%{_kf6_libdir}/libKF6Su.so +%{_kf6_libdir}/cmake/KF6Su/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-runner/sonic-frameworks-runner.spec b/sonic-frameworks-runner/sonic-frameworks-runner.spec new file mode 100644 index 0000000..14e75d4 --- /dev/null +++ b/sonic-frameworks-runner/sonic-frameworks-runner.spec @@ -0,0 +1,118 @@ +# Generated for SonicDE from Fedora's kf6-krunner.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-runner fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-runner +# Upstream KDE project: krunner +%global oldname kf6-krunner + +%global framework krunner + +#Name: kf6-%%{framework} +Name: sonic-frameworks-runner +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 3 solution with parallelized query system + +License: BSD-2-Clause AND CC0-1.0 AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: sonic-rpm-macros + +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6Service) +BuildRequires: cmake(KF6Solid) +BuildRequires: cmake(KF6ThreadWeaver) +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: cmake(Qt6Core) + +BuildRequires: cmake(KF6ItemModels) + +Requires: kf6-filesystem + +Provides: kf6-krunner = %{version}-%{release} +Conflicts: kf6-krunner < %{version}-%{release} + +%description +KRunner provides a parallelized query system extendable via plugins. + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Requires: qt6-qtbase-devel +Requires: cmake(KF6CoreAddons) +Provides: kf6-krunner-devel = %{version}-%{release} +Conflicts: kf6-krunner-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-krunner-doc = %{version}-%{release} +Conflicts: kf6-krunner-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-krunner-html = %{version}-%{release} +Conflicts: kf6-krunner-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%files +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/%{framework}* +%{_kf6_libdir}/libKF6Runner.so.* + +%files devel +%{_kf6_includedir}/KRunner/ +%{_kf6_libdir}/libKF6Runner.so +%{_kf6_libdir}/cmake/KF6Runner/ +%{_kf6_datadir}/dbus-1/interfaces/* +%{_kf6_datadir}/kdevappwizard/templates/runner6.tar.bz2 +%{_kf6_datadir}/kdevappwizard/templates/runner6python.tar.bz2 +%{_libdir}/qt6/metatypes/qt6kf6runner_*.json +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-settings-ui/sonic-frameworks-settings-ui.spec b/sonic-frameworks-settings-ui/sonic-frameworks-settings-ui.spec new file mode 100644 index 0000000..a3c4b69 --- /dev/null +++ b/sonic-frameworks-settings-ui/sonic-frameworks-settings-ui.spec @@ -0,0 +1,124 @@ +# Generated for SonicDE from Fedora's kf6-kconfigwidgets.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-settings-ui fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-settings-ui +# Upstream KDE project: kconfigwidgets +%global oldname kf6-kconfigwidgets + +%global framework kconfigwidgets + +#Name: kf6-%%{framework} +Name: sonic-frameworks-settings-ui +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 3 addon for creating configuration dialogs + +# The following licenses are in LICENSES but go unused: BSD-3-Clause, MIT +License: CC0-1.0 AND GPL-2.0-or-later AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-3.0-only AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtbase-private-devel +BuildRequires: cmake(Qt6UiPlugin) +BuildRequires: cmake(KF6Codecs) +BuildRequires: cmake(KF6ColorScheme) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6DocTools) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: pkgconfig(xkbcommon) + +Requires: kf6-filesystem + +Provides: kf6-kconfigwidgets = %{version}-%{release} +Conflicts: kf6-kconfigwidgets < %{version}-%{release} + +%description +KConfigWidgets provides easy-to-use classes to create configuration dialogs, as +well as a set of widgets which uses KConfig to store their settings. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: sonic-frameworks-auth-devel +Requires: sonic-frameworks-text-codec-devel +Requires: cmake(KF6ColorScheme) +Requires: cmake(KF6Config) +Requires: cmake(KF6WidgetsAddons) +Provides: kf6-kconfigwidgets-devel = %{version}-%{release} +Conflicts: kf6-kconfigwidgets-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kconfigwidgets-doc = %{version}-%{release} +Conflicts: kf6-kconfigwidgets-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kconfigwidgets-html = %{version}-%{release} +Conflicts: kf6-kconfigwidgets-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang %{oldname} --with-man --all-name + +%files -f %{name}.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_libdir}/libKF6ConfigWidgets.so.* +%{_datadir}/locale/*/kf6_entry.desktop +%{_kf6_datadir}/qlogging-categories6/%{framework}* + +%files devel +%{_kf6_includedir}/KConfigWidgets/ +%{_kf6_libdir}/libKF6ConfigWidgets.so +%{_kf6_libdir}/cmake/KF6ConfigWidgets/ +%{_kf6_libdir}/qt6/plugins/designer/kconfigwidgets6widgets.so +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-settings-utils/sonic-frameworks-settings-utils.spec b/sonic-frameworks-settings-utils/sonic-frameworks-settings-utils.spec new file mode 100644 index 0000000..d3c3bb2 --- /dev/null +++ b/sonic-frameworks-settings-utils/sonic-frameworks-settings-utils.spec @@ -0,0 +1,134 @@ +# Generated for SonicDE from Fedora's kf6-kcmutils.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-settings-utils fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-settings-utils +# Upstream KDE project: kcmutils +%global oldname kf6-kcmutils + +%global framework kcmutils + +#Name: kf6-%%{framework} +Name: sonic-frameworks-settings-utils +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 3 addon with extra API to write KConfigModules + +License: BSD-2-Clause AND BSD-3-Clause AND CC0-1.0 AND GPL-2.0-or-later AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-3.0-only AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: cmake(KF6ItemViews) +BuildRequires: cmake(KF6Package) +BuildRequires: cmake(KF6XmlGui) +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: cmake(KF6ColorScheme) +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: cmake(KF6Kirigami) +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtdeclarative-devel + +Requires: kf6-filesystem +Requires: qt6qml(org.kde.kirigami) + +Provides: kf6-kcmutils = %{version}-%{release} +Conflicts: kf6-kcmutils < %{version}-%{release} + +%description +KCMUtils provides various classes to work with KCModules. KCModules can be +created with the KConfigWidgets framework. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: cmake(KF6ConfigWidgets) +Requires: cmake(KF6Service) +Requires: cmake(Qt6Qml) +Provides: kf6-kcmutils-devel = %{version}-%{release} +Conflicts: kf6-kcmutils-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kcmutils-doc = %{version}-%{release} +Conflicts: kf6-kcmutils-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kcmutils-html = %{version}-%{release} +Conflicts: kf6-kcmutils-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang %{oldname} --all-name +# create/own dirs +mkdir -p %{buildroot}%{_kf6_qtplugindir}/kcms + +%files -f %{name}.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_bindir}/kcmshell6 +%{_kf6_datadir}/qlogging-categories6/%{framework}.* +%{_kf6_libdir}/libKF6KCMUtils.so.* +%{_kf6_libdir}/libKF6KCMUtilsCore.so.* +%{_kf6_qmldir}/org/kde/kcmutils/ +%{_kf6_qtplugindir}/kcms/ +%{_libdir}/libKF6KCMUtilsQuick.so.6 +%{_libdir}/libKF6KCMUtilsQuick.so.%{version} + +%files devel +%{_kf6_includedir}/KCMUtils/ +%{_kf6_includedir}/KCMUtilsCore/ +%{_kf6_libdir}/libKF6KCMUtils.so +%{_libdir}/libKF6KCMUtilsQuick.so +%{_kf6_libdir}/libKF6KCMUtilsCore.so +%{_kf6_libdir}/cmake/KF6KCMUtils/ +%{_kf6_libexecdir}/kcmdesktopfilegenerator +%{_kf6_includedir}/KCMUtilsQuick +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-settings/sonic-frameworks-settings.spec b/sonic-frameworks-settings/sonic-frameworks-settings.spec new file mode 100644 index 0000000..bc80bb7 --- /dev/null +++ b/sonic-frameworks-settings/sonic-frameworks-settings.spec @@ -0,0 +1,124 @@ +# Generated for SonicDE from Fedora's kf6-kconfig.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-settings fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-settings +# Upstream KDE project: kconfig +%global oldname kf6-kconfig + +%global framework kconfig + +#Name: kf6-%%{framework} +Name: sonic-frameworks-settings +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 1 addon with advanced configuration system +License: BSD-2-Clause AND BSD-3-Clause AND CC0-1.0 AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-3.0-only AND MIT +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(Qt6DBus) +BuildRequires: cmake(Qt6Gui) +BuildRequires: cmake(Qt6Qml) +BuildRequires: cmake(Qt6Xml) +BuildRequires: pkgconfig(xkbcommon) + +Requires: kf6-filesystem + +Provides: kf6-kconfig = %{version}-%{release} +Conflicts: kf6-kconfig < %{version}-%{release} + +%description +KDE Frameworks 6 Tier 1 addon with advanced configuration system made of two +parts: KConfigCore and KConfigGui. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: pkgconfig(Qt6Xml) +Requires: cmake(Qt6Qml) +Provides: kf6-kconfig-devel = %{version}-%{release} +Conflicts: kf6-kconfig-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kconfig-doc = %{version}-%{release} +Conflicts: kf6-kconfig-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kconfig-html = %{version}-%{release} +Conflicts: kf6-kconfig-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang_kf6 kconfig6_qt + +%files -f kconfig6_qt.lang +%doc DESIGN README.md TODO +%license LICENSES/*.txt +%{_kf6_bindir}/kreadconfig6 +%{_kf6_bindir}/kwriteconfig6 +%{_kf6_datadir}/qlogging-categories6/%{framework}* +%{_kf6_libdir}/libKF6ConfigCore.so.6* +%{_kf6_libdir}/libKF6ConfigQml.so.6* +%{_kf6_libdir}/libKF6ConfigGui.so.6* +%{_kf6_libexecdir}/kconf_update +%{_kf6_libexecdir}/kconfig_compiler_kf6 +%{_qt6_qmldir}/org/kde/config/qmldir +%{_qt6_qmldir}/org/kde/config/kde-qmlmodule.version +%{_qt6_qmldir}/org/kde/config/KF6ConfigQml.qmltypes +%{_qt6_qmldir}/org/kde/config/libKF6ConfigQmlplugin.so + +%files devel +%{_kf6_includedir}/KConfig/ +%{_kf6_includedir}/KConfigCore/ +%{_kf6_includedir}/KConfigGui/ +%{_kf6_includedir}/KConfigQml/ +%{_kf6_libdir}/cmake/KF6Config/ +%{_kf6_libdir}/libKF6ConfigCore.so +%{_kf6_libdir}/libKF6ConfigGui.so +%{_kf6_libdir}/libKF6ConfigQml.so +%{_libdir}/qt6/metatypes/qt6kf6config* +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-silver-icons/sonic-frameworks-silver-icons.spec b/sonic-frameworks-silver-icons/sonic-frameworks-silver-icons.spec new file mode 100644 index 0000000..6317613 --- /dev/null +++ b/sonic-frameworks-silver-icons/sonic-frameworks-silver-icons.spec @@ -0,0 +1,214 @@ +# Generated for SonicDE from Fedora's kf6-breeze-icons.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-silver-icons fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-silver-icons +# Upstream KDE project: breeze-icons +%global oldname kf6-breeze-icons + +# If KF7 still provides these icons, then their installation should then +# be disabled in KF6 builds. +%bcond install_icons 1 +# for compatibility, to be removed once Kexi (and others?) are ported +%bcond install_rcc 1 + +%global framework breeze-icons + +#Name: kf6-%%{framework} +Name: sonic-frameworks-silver-icons +Summary: Breeze icon theme library +Version: 6.29.0 +Release: 1%{?dist} + +# skladnik.svg is CC-BY-SA-4.0 +# folder-edit-sign-encrypt.svg is LGPL-2.1-or-later +# src/lib/ is LGPL-2.0-or-later +# all other icons are LGPL-3.0-or-later +License: LGPL-2.0-or-later AND LGPL-2.1-or-later AND LGPL-3.0-or-later AND CC-BY-SA-4.0 +#URL: https://develop.kde.org/frameworks/breeze-icons/ +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +## upstream patches + + +## upstreamable patches + + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6Gui) +# icon optimizations +BuildRequires: hardlink +# for generate-24px-versions.py +BuildRequires: python3-lxml + +%if %{with install_icons} +Requires: breeze-icon-theme = %{version}-%{release} +%else +Requires: breeze-icon-theme +%endif + +Provides: kf6-breeze-icons = %{version}-%{release} +Conflicts: kf6-breeze-icons < %{version}-%{release} + +%description +%{summary}. + +%if %{with install_icons} +%package -n breeze-icon-theme +Summary: Breeze icon theme +# analysis above +License: LGPL-2.1-or-later AND LGPL-3.0-or-later AND CC-BY-SA-4.0 +BuildArch: noarch +Requires: hicolor-icon-theme +# Needed for proper Fedora logo +Requires: system-logos +# upstream name +Provides: breeze-icons = %{version}-%{release} +# package changed arch +Obsoletes: breeze-icon-theme < 6.3.0-2 +# anaconda icon split out into fedora-only subpackage +Obsoletes: breeze-icon-theme < 6.13.0-2 +Conflicts: breeze-icon-theme < 6.13.0-2 +%description -n breeze-icon-theme +%{summary}. + +%if 0%{?fedora} +%package -n breeze-icon-theme-fedora +Summary: Breeze icon theme Fedora specific icons +License: LGPL-3.0-or-later +BuildArch: noarch +Requires: breeze-icon-theme = %{version}-%{release} +# This is for Fedora only +Requires: fedora-release-common +Supplements: (breeze-icon-theme and fedora-release-kde) +Obsoletes: breeze-icon-theme < 6.13.0-2 +Conflicts: breeze-icon-theme < 6.13.0-2 +%description -n breeze-icon-theme-fedora +%{summary}. +%endif + +%endif + +%if %{with install_rcc} +%package -n breeze-icon-theme-rcc +Summary: Breeze Qt resource files +# analysis above +License: LGPL-2.1-or-later AND LGPL-3.0-or-later AND CC-BY-SA-4.0 +BuildArch: noarch +# package changed arch +Obsoletes: breeze-icon-theme-rcc < 6.3.0-2 +%description -n breeze-icon-theme-rcc +%{summary}. +%endif + +%package devel +Summary: Breeze icon theme development files +Requires: %{name} = %{version}-%{release} +# renamed for https://pagure.io/fedora-kde/SIG/issue/530 +Provides: breeze-icon-theme-devel = %{version}-%{release} +Obsoletes: breeze-icon-theme-devel < 6.3.0-2 +Provides: kf6-breeze-icons-devel = %{version}-%{release} +Conflicts: kf6-breeze-icons-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +# Move Fedora installer icon out of normal breeze installs +mkdir -p icons-fedora/apps/48 +mv icons/apps/48/org.fedoraproject.AnacondaInstaller.svg icons-fedora/apps/48 + + +%build +%cmake_kf6 \ + -DBINARY_ICONS_RESOURCE:BOOL=%{?with_install_rcc:ON}%{!?with_install_rcc:OFF} \ + -DSKIP_INSTALL_ICONS:BOOL=%{?with_install_icons:OFF}%{!?with_install_icons:ON} \ + %{nil} + +%cmake_build + + +%install +%cmake_install + +%if %{with install_icons} + +## icon optimizations +du -s . +hardlink -c -v %{buildroot}%{_datadir}/icons/ +du -s . + +# %%ghost icon.cache +touch %{buildroot}%{_kf6_datadir}/icons/{breeze,breeze-dark}/icon-theme.cache + +%if 0%{?fedora} +install -pm 0644 icons-fedora/apps/48/org.fedoraproject.AnacondaInstaller.svg %{buildroot}%{_kf6_datadir}/icons/breeze/apps/48 +ln -sr %{buildroot}%{_kf6_datadir}/icons/breeze/apps/48/org.fedoraproject.AnacondaInstaller.svg %{buildroot}%{_kf6_datadir}/icons/breeze-dark/apps/48/org.fedoraproject.AnacondaInstaller.svg +%endif + +## trigger-based scriptlets +%transfiletriggerin -n breeze-icon-theme -- %{_datadir}/icons/breeze +gtk-update-icon-cache --force %{_datadir}/icons/breeze &>/dev/null || : + +%transfiletriggerin -n breeze-icon-theme -- %{_datadir}/icons/breeze-dark +gtk-update-icon-cache --force %{_datadir}/icons/breeze-dark &>/dev/null || : + +%transfiletriggerpostun -n breeze-icon-theme -- %{_datadir}/icons/breeze +gtk-update-icon-cache --force %{_datadir}/icons/breeze &>/dev/null || : + +%transfiletriggerpostun -n breeze-icon-theme -- %{_datadir}/icons/breeze-dark +gtk-update-icon-cache --force %{_datadir}/icons/breeze-dark &>/dev/null || : + +%endif + +%files +%license COPYING.LIB +%doc README.md +%{_kf6_libdir}/libKF6BreezeIcons.so.6 +%{_kf6_libdir}/libKF6BreezeIcons.so.%{version} + +%files devel +%{_kf6_includedir}/BreezeIcons/ +%{_kf6_libdir}/cmake/KF6BreezeIcons/ +%{_kf6_libdir}/libKF6BreezeIcons.so + +%if %{with install_icons} +%files -n breeze-icon-theme +%license COPYING-ICONS +%doc README.md +%ghost %{_datadir}/icons/breeze/icon-theme.cache +%{_datadir}/icons/breeze/index.theme +%{_datadir}/icons/breeze/*/ +%ghost %{_datadir}/icons/breeze-dark/icon-theme.cache +%{_datadir}/icons/breeze-dark/index.theme +%{_datadir}/icons/breeze-dark/*/ +%exclude %{_datadir}/icons/breeze/breeze-icons.rcc +%if 0%{?fedora} +%exclude %{_datadir}/icons/breeze*/apps/*/org.fedoraproject.AnacondaInstaller.svg +%endif + +%if 0%{?fedora} +%files -n breeze-icon-theme-fedora +%{_datadir}/icons/breeze*/apps/*/org.fedoraproject.AnacondaInstaller.svg +%endif + +%endif + +%if %{with install_rcc} +%files -n breeze-icon-theme-rcc +%{_datadir}/icons/breeze/breeze-icons.rcc +%endif + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-spell-check/sonic-frameworks-spell-check.spec b/sonic-frameworks-spell-check/sonic-frameworks-spell-check.spec new file mode 100644 index 0000000..1efffd1 --- /dev/null +++ b/sonic-frameworks-spell-check/sonic-frameworks-spell-check.spec @@ -0,0 +1,191 @@ +# Generated for SonicDE from Fedora's kf6-sonnet.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-spell-check fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-spell-check +# Upstream KDE project: sonnet +%global oldname kf6-sonnet + +%global framework sonnet + +#Name: kf6-%%{framework} +Name: sonic-frameworks-spell-check +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 1 solution for spell checking +License: BSD-3-Clause AND CC0-1.0 AND LGPL-2.0-or-later AND LGPL-2.1-or-later +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig +# patch out default excluded file list to have it empty +# https://bugs.kde.org/show_bug.cgi?id=482376 +Patch0: sonnet6-default-list.patch + +BuildRequires: appstream +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: sonic-rpm-macros +BuildRequires: make +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtdeclarative-devel +BuildRequires: qt6-qttools-devel +BuildRequires: zlib-devel +BuildRequires: cmake(Qt6Quick) +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: pkgconfig(aspell) +BuildRequires: pkgconfig(hunspell) +BuildRequires: hspell-devel +BuildRequires: pkgconfig(libvoikko) + + +Requires: kf6-filesystem +Recommends: %{name}-hunspell + +Provides: kf6-sonnet = %{version}-%{release} +Conflicts: kf6-sonnet < %{version}-%{release} + +%description +KDE Frameworks 6 Tier 1 solution for spell checking. + + +%package aspell +Summary: aspell plugin for %{name} +Requires: %{name} = %{version}-%{release} +Provides: kf6-sonnet-aspell = %{version}-%{release} +Conflicts: kf6-sonnet-aspell < %{version}-%{release} + +%description aspell +The %{name}-aspell package contains the aspell spellchecking +plugin for %{name}. + +%package hunspell +Summary: hunspell plugin for %{name} +Requires: %{name} = %{version}-%{release} +Provides: kf6-sonnet-hunspell = %{version}-%{release} +Conflicts: kf6-sonnet-hunspell < %{version}-%{release} + +%description hunspell +The %{name}-hunspell package contains the hunspell spellchecking +plugin for %{name}. + +%package hspell +Summary: hspell plugin for %{name} +Supplements: (%{name} and langpacks-he) +Requires: %{name} = %{version}-%{release} +Requires: hunspell-he + +Provides: kf6-sonnet-hspell = %{version}-%{release} +Conflicts: kf6-sonnet-hspell < %{version}-%{release} + +%description hspell +The %{name}-hspell package contains the Hebrew hspell spellchecking +plugin for %{name}. + +%package voikko +Summary: voikko plugin for %{name} +Supplements: (%{name} and langpacks-fi) +Requires: %{name} = %{version}-%{release} +Provides: kf6-sonnet-voikko = %{version}-%{release} +Conflicts: kf6-sonnet-voikko < %{version}-%{release} + +%description voikko +The %{name}-voikko package contains the Finnish voikko spellchecking +plugin for %{name}. + + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Requires: qt6-qtbase-devel +Provides: kf6-sonnet-devel = %{version}-%{release} +Conflicts: kf6-sonnet-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-sonnet-doc = %{version}-%{release} +Conflicts: kf6-sonnet-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-sonnet-html = %{version}-%{release} +Conflicts: kf6-sonnet-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang_kf6 sonnet6_qt + +%files -f sonnet6_qt.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/*categories +%{_kf6_libdir}/libKF6SonnetCore.so.* +%{_kf6_bindir}/parsetrigrams6 +%{_kf6_qmldir}/org/kde/sonnet/ +%{_kf6_libdir}/libKF6SonnetUi.so.* + +%files aspell +%dir %{_kf6_plugindir}/sonnet +%{_kf6_plugindir}/sonnet/sonnet_aspell.so + +%files hunspell +%dir %{_kf6_plugindir}/sonnet +%{_kf6_plugindir}/sonnet/sonnet_hunspell.so + +%files hspell +%dir %{_kf6_plugindir}/sonnet +%{_kf6_plugindir}/sonnet/sonnet_hspell.so + +%files voikko +%dir %{_kf6_plugindir}/sonnet +%{_kf6_plugindir}/sonnet/sonnet_voikko.so + + +%files devel +%doc README.md +%license LICENSES/*.txt +%{_kf6_includedir}/Sonnet/ +%{_kf6_includedir}/SonnetCore/ +%{_kf6_includedir}/SonnetUi/ +%{_kf6_libdir}/cmake/KF6Sonnet/ +%{_kf6_libdir}/libKF6SonnetCore.so +%{_kf6_libdir}/libKF6SonnetUi.so +%{_kf6_qtplugindir}/designer/sonnet6widgets.so +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-spell-check/sonnet6-default-list.patch b/sonic-frameworks-spell-check/sonnet6-default-list.patch new file mode 100644 index 0000000..0ae7a17 --- /dev/null +++ b/sonic-frameworks-spell-check/sonnet6-default-list.patch @@ -0,0 +1,37 @@ +--- sonnet-6.15.0.orig/src/core/settings.cpp 2025-06-06 15:33:52.000000000 +0200 ++++ sonnet-6.15.0/src/core/settings.cpp 2025-06-11 09:17:43.357821259 +0200 +@@ -279,20 +279,20 @@ bool Settings::modified() const + QStringList Settings::defaultIgnoreList() + { + QStringList l; +- l.append(QStringLiteral("KMail")); +- l.append(QStringLiteral("KOrganizer")); +- l.append(QStringLiteral("KAddressBook")); +- l.append(QStringLiteral("KHTML")); +- l.append(QStringLiteral("KIO")); +- l.append(QStringLiteral("KJS")); +- l.append(QStringLiteral("Konqueror")); +- l.append(QStringLiteral("Sonnet")); +- l.append(QStringLiteral("Kontact")); +- l.append(QStringLiteral("Qt")); +- l.append(QStringLiteral("Okular")); +- l.append(QStringLiteral("KMix")); +- l.append(QStringLiteral("Amarok")); +- l.append(QStringLiteral("KDevelop")); ++// l.append(QStringLiteral("KMail")); ++// l.append(QStringLiteral("KOrganizer")); ++// l.append(QStringLiteral("KAddressBook")); ++// l.append(QStringLiteral("KHTML")); ++// l.append(QStringLiteral("KIO")); ++// l.append(QStringLiteral("KJS")); ++// l.append(QStringLiteral("Konqueror")); ++// l.append(QStringLiteral("Sonnet")); ++// l.append(QStringLiteral("Kontact")); ++// l.append(QStringLiteral("Qt")); ++// l.append(QStringLiteral("Okular")); ++// l.append(QStringLiteral("KMix")); ++// l.append(QStringLiteral("Amarok")); ++// l.append(QStringLiteral("KDevelop")); + return l; + } + diff --git a/sonic-frameworks-sso/sonic-frameworks-sso.spec b/sonic-frameworks-sso/sonic-frameworks-sso.spec new file mode 100644 index 0000000..e4351ff --- /dev/null +++ b/sonic-frameworks-sso/sonic-frameworks-sso.spec @@ -0,0 +1,205 @@ +# Generated for SonicDE from Fedora's signon.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-sso fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-sso +# Upstream KDE project: signond +%global oldname signon + +%global gitdate 20240205 +%global commit0 c8ad98249af541514ff7a81634d3295e712f1a39 +%global shortcommit0 %(c=%{commit0}; echo ${c:0:7}) +%global tag0 VERSION_%{version} + +#Name: signon +Name: sonic-frameworks-sso +Version: 8.61.2 +Release: 1%{?dist} +Summary: Accounts framework for Linux and POSIX based platforms + +License: LGPL-2.1-only +#URL: https://gitlab.com/accounts-sso/signond +URL: https://github.com/Sonic-DE/%{reponame} + +# Temporary source, for plasma6 compatibility +#Source0: https://gitlab.com/nicolasfella/signond/-/archive/%%{commit0}/signond-%%{commit0}.tar.gz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz + +# Original Sources +#%%if 0%%{?tag0:1} +#Source0: https://gitlab.com/accounts-sso/signond/repository/archive.tar.gz?ref=%%{tag0}#/%%{name}-%%{version}.tar.gz +#%%else +#Source0: https://gitlab.com/accounts-sso/signond/repository/archive.tar.gz?ref=%%{commit0}#/%%{name}-%%{shortcommit0}.tar.gz +#%%endif + +BuildRequires: make +BuildRequires: dbus-x11 +BuildRequires: doxygen +BuildRequires: gcc-c++ +BuildRequires: graphviz +BuildRequires: libproxy-devel +BuildRequires: qt5-qtbase-devel +BuildRequires: time +BuildRequires: qt6-qtbase-devel + +# signon-qt5 was in ktp-5 COPR +Obsoletes: signon-qt5 < 8.57-5 +Provides: signon-qt5 = %{version}-%{release} + +# upstream name: signond +Provides: signond = %{version}-%{release} + +# conflicting implementation: gsignond +Conflicts: gsignond + +Requires: dbus + +Provides: signon = %{version}-%{release} +Conflicts: signon < %{version}-%{release} + +%description +Single Sign-On is a framework for centrally storing authentication credentials +and handling authentication on behalf of applications as requested by +applications. It consists of a secure storage of login credentials (for example +usernames and passwords), plugins for different authentication systems and a +client library for applications to communicate with this system. + +%package qt5 +Summary: Single Sign On client library for Qt5-based applications +Provides: signon-qt5 = %{version}-%{release} +Conflicts: signon-qt5 < %{version}-%{release} + +%description qt5 +%{summary}. + +%package qt6 +Summary: Single Sign On client library for Qt6-based applications +Provides: signon-qt6 = %{version}-%{release} +Conflicts: signon-qt6 < %{version}-%{release} + +%description qt6 +%{summary}. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +# upstream name: signond +Provides: signond-devel = %{version}-%{release} +Provides: signon-devel = %{version}-%{release} +Conflicts: signon-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package qt5-devel +Summary: Development files for %{name}-qt5 +Provides: signon-qt5-devel = %{version}-%{release} +Conflicts: signon-qt5-devel < %{version}-%{release} + +%description qt5-devel +%{summary}. + +%package qt6-devel +Summary: Development files for %{name}-qt6 +Provides: signon-qt6-devel = %{version}-%{release} +Conflicts: signon-qt6-devel < %{version}-%{release} + +%description qt6-devel +%{summary}. + +%package doc +Summary: Documentation for %{name} +BuildArch: noarch + +Provides: signon-doc = %{version}-%{release} +Conflicts: signon-doc < %{version}-%{release} + +%description doc +The %{name}-doc package contains documentation for %{name}. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +mkdir %{oldname}_qt5 +pushd %{oldname}_qt5 +%qmake_qt5 \ + CONFIG+=release \ + QMF_INSTALL_ROOT=%{_prefix} LIBDIR=%{_libdir} ../signon.pro +popd +%make_build -C %{oldname}_qt5 + +mkdir %{oldname}_qt6 +pushd %{oldname}_qt6 +%qmake_qt6 \ + CONFIG+=release \ + QMF_INSTALL_ROOT=%{_prefix} LIBDIR=%{_libdir} ../signon.pro +popd +%make_build -C %{oldname}_qt6 + +%install +make install INSTALL_ROOT=%{buildroot} -C %{oldname}_qt5 +make install INSTALL_ROOT=%{buildroot} -C %{oldname}_qt6 +# Removing additional unneeded files +rm %{buildroot}%{_libdir}/libsignon-qt5.a +rm %{buildroot}%{_libdir}/libsignon-qt6.a + +# create/own libdir/extensions +mkdir -p %{buildroot}%{_libdir}/extensions/ + +%files +## fixme: common/shared _docdir/signon content below gets in the way +#doc README.md TODO NOTES +%license COPYING +%config(noreplace) %{_sysconfdir}/signond.conf +%{_bindir}/signond +%{_bindir}/signonpluginprocess +%{_libdir}/libsignon-extension.so.1* +%{_libdir}/libsignon-plugins-common.so.1* +%{_libdir}/libsignon-plugins.so.1* +%{_libdir}/signon/ +%{_datadir}/dbus-1/services/*.service + +%files qt5 +%{_libdir}/libsignon-qt5.so.1{,.*} + +%files qt6 +%{_libdir}/libsignon-qt6.so.1{,.*} + +%files devel +%{_includedir}/signon-extension/ +%{_includedir}/signon-plugins/ +%{_includedir}/signond/ +%{_libdir}/libsignon-extension.so +%{_libdir}/libsignon-plugins-common.so +%{_libdir}/libsignon-plugins.so +%{_libdir}/pkgconfig/SignOnExtension.pc +%{_libdir}/pkgconfig/signon-plugins-common.pc +%{_libdir}/pkgconfig/signon-plugins.pc +%{_libdir}/pkgconfig/signond.pc + +%files qt5-devel +%{_includedir}/signon-qt5/ +%{_libdir}/cmake/SignOnQt5/ +%{_libdir}/pkgconfig/libsignon-qt5.pc +%{_libdir}/libsignon-qt5.so + +%files qt6-devel +%{_includedir}/signon-qt6/ +%{_libdir}/cmake/SignOnQt6/ +%{_libdir}/pkgconfig/libsignon-qt6.pc +%{_libdir}/libsignon-qt6.so + +%files doc +%{_docdir}/signon/ +%{_docdir}/libsignon-qt/ +%{_docdir}/signon-plugins/ +%{_docdir}/signon-plugins-dev/ + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 8.61.2-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-status-notification/sonic-frameworks-status-notification.spec b/sonic-frameworks-status-notification/sonic-frameworks-status-notification.spec new file mode 100644 index 0000000..cc8b7be --- /dev/null +++ b/sonic-frameworks-status-notification/sonic-frameworks-status-notification.spec @@ -0,0 +1,126 @@ +# Generated for SonicDE from Fedora's kf6-kstatusnotifieritem.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-status-notification fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-status-notification +# Upstream KDE project: kstatusnotifieritem +%global oldname kf6-kstatusnotifieritem + +%global framework kstatusnotifieritem + +#Name: kf6-%%{framework} +Name: sonic-frameworks-status-notification +Version: 6.29.0 +Release: 1%{?dist} +Summary: Implementation of Status Notifier Items + +License: CC0-1.0 AND LGPL-2.0-or-later +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-rpm-macros +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: cmake(Qt6Widgets) +BuildRequires: cmake(Qt6DBus) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: pkgconfig(x11) +BuildRequires: pkgconfig(xkbcommon) + +# required for pyside6 python bindings +BuildRequires: python3-devel +BuildRequires: python3-build +BuildRequires: python3-setuptools +BuildRequires: python3-wheel +BuildRequires: clang-devel +BuildRequires: cmake(Shiboken6) +BuildRequires: cmake(PySide6) + +Requires: kf6-filesystem + +Provides: kf6-kstatusnotifieritem = %{version}-%{release} +Conflicts: kf6-kstatusnotifieritem < %{version}-%{release} + +%description +%summary. + +%package -n python3-%{name} +Summary: Qt for Python bindings for %{name} +Provides: python3-kf6-kstatusnotifieritem = %{version}-%{release} +Conflicts: python3-kf6-kstatusnotifieritem < %{version}-%{release} + +%description -n python3-%{name} +The package contains the pyside6 bindings library for %{name} + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Provides: kf6-kstatusnotifieritem-devel = %{version}-%{release} +Conflicts: kf6-kstatusnotifieritem-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kstatusnotifieritem-doc = %{version}-%{release} +Conflicts: kf6-kstatusnotifieritem-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kstatusnotifieritem-html = %{version}-%{release} +Conflicts: kf6-kstatusnotifieritem-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang_kf6 kstatusnotifieritem6_qt + +%files -f kstatusnotifieritem6_qt.lang +%{_kf6_libdir}/libKF6StatusNotifierItem.so.* +%{_kf6_datadir}/dbus-1/interfaces/kf6_org.kde.StatusNotifierItem.xml +%{_kf6_datadir}/dbus-1/interfaces/kf6_org.kde.StatusNotifierWatcher.xml +%{_kf6_datadir}/qlogging-categories6/kstatusnotifieritem.categories + +%files -n python3-%{name} +%{python3_sitearch}/KStatusNotifierItem.cpython-%{python3_version_nodots}*.so + +%files devel +%{_kf6_includedir}/KStatusNotifierItem +%{_kf6_libdir}/cmake/KF6StatusNotifierItem +%{_kf6_libdir}/libKF6StatusNotifierItem.so +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-svg/sonic-frameworks-svg.spec b/sonic-frameworks-svg/sonic-frameworks-svg.spec new file mode 100644 index 0000000..532d875 --- /dev/null +++ b/sonic-frameworks-svg/sonic-frameworks-svg.spec @@ -0,0 +1,112 @@ +# Generated for SonicDE from Fedora's kf6-ksvg.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-svg fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-svg +# Upstream KDE project: ksvg +%global oldname kf6-ksvg + +%global framework ksvg + +#Name: kf6-ksvg +Name: sonic-frameworks-svg +Summary: Components for handling SVGs +Version: 6.29.0 +Release: 1%{?dist} + +License: CC0-1.0 AND GPL-2.0-or-later AND LGPL-2.0-or-later +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +# upstream patches + +BuildRequires: cmake +BuildRequires: gcc-c++ + +BuildRequires: sonic-rpm-macros +BuildRequires: sonic-frameworks-cmake-modules >= %{version} + +BuildRequires: cmake(Qt6) +BuildRequires: cmake(Qt6Quick) +BuildRequires: cmake(Qt6Svg) +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: cmake(KF6Archive) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: cmake(KF6Kirigami2) +BuildRequires: cmake(KF6ColorScheme) + +Provides: kf6-ksvg = %{version}-%{release} +Conflicts: kf6-ksvg < %{version}-%{release} + +%description +%{summary}. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} + +Provides: kf6-ksvg-devel = %{version}-%{release} +Conflicts: kf6-ksvg-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-ksvg-doc = %{version}-%{release} +Conflicts: kf6-ksvg-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-ksvg-html = %{version}-%{release} +Conflicts: kf6-ksvg-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%files +%license LICENSES/* +%{_kf6_libdir}/libKF6Svg.so.* +%{_kf6_libdir}/qt6/qml/org/kde/ksvg +%{_kf6_datadir}/qlogging-categories6/ksvg.categories + +%files devel +%{_kf6_includedir}/KSvg +%{_kf6_libdir}/cmake/KF6Svg +%{_kf6_libdir}/libKF6Svg.so +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-syntax-highlighting/sonic-frameworks-syntax-highlighting.spec b/sonic-frameworks-syntax-highlighting/sonic-frameworks-syntax-highlighting.spec new file mode 100644 index 0000000..bb17d3a --- /dev/null +++ b/sonic-frameworks-syntax-highlighting/sonic-frameworks-syntax-highlighting.spec @@ -0,0 +1,119 @@ +# Generated for SonicDE from Fedora's kf6-syntax-highlighting.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-syntax-highlighting fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-syntax-highlighting +# Upstream KDE project: syntax-highlighting +%global oldname kf6-syntax-highlighting + +%global framework syntax-highlighting + +#Name: kf6-%%{framework} +Name: sonic-frameworks-syntax-highlighting +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Syntax highlighting engine for Kate syntax definitions +License: MIT AND BSD-2-Clause AND BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND LGPL-2.0-or-later +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +# Compile Tools +BuildRequires: cmake +BuildRequires: gcc-c++ + +# KDE Frameworks +BuildRequires: sonic-frameworks-cmake-modules + +# Fedora +Requires: kf6-filesystem +BuildRequires: sonic-rpm-macros + +# Other +BuildRequires: perl-interpreter +BuildRequires: pkgconfig(xerces-c) + +# Qt +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6Qml) + +Provides: kf6-syntax-highlighting = %{version}-%{release} +Conflicts: kf6-syntax-highlighting < %{version}-%{release} + +%description +%{summary}. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Provides: kf6-syntax-highlighting-devel = %{version}-%{release} +Conflicts: kf6-syntax-highlighting-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-syntax-highlighting-doc = %{version}-%{release} +Conflicts: kf6-syntax-highlighting-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-syntax-highlighting-html = %{version}-%{release} +Conflicts: kf6-syntax-highlighting-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 -DBUILD_TESTING:BOOL=ON +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang_kf6 syntaxhighlighting6_qt + +%check +export CTEST_OUTPUT_ON_FAILURE=1 +make test ARGS="--output-on-failure --timeout 300" -C %{_target_platform} ||: + +%files -f syntaxhighlighting6_qt.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_bindir}/ksyntaxhighlighter6 +%{_kf6_datadir}/qlogging-categories6/*categories +%{_kf6_libdir}/libKF6SyntaxHighlighting.so.6 +%{_kf6_libdir}/libKF6SyntaxHighlighting.so.%{version} +%{_kf6_qmldir}/org/kde/syntaxhighlighting + +%files devel +%{_kf6_includedir}/KSyntaxHighlighting/ +%{_kf6_libdir}/libKF6SyntaxHighlighting.so +%{_kf6_libdir}/cmake/KF6SyntaxHighlighting/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-text-codec/sonic-frameworks-text-codec.spec b/sonic-frameworks-text-codec/sonic-frameworks-text-codec.spec new file mode 100644 index 0000000..266b1e2 --- /dev/null +++ b/sonic-frameworks-text-codec/sonic-frameworks-text-codec.spec @@ -0,0 +1,106 @@ +# Generated for SonicDE from Fedora's kf6-kcodecs.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-text-codec fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-text-codec +# Upstream KDE project: kcodecs +%global oldname kf6-kcodecs + +%global framework kcodecs + +#Name: kf6-%%{framework} +Name: sonic-frameworks-text-codec +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 1 addon with string manipulation methods +License: BSD-3-Clause AND CC0-1.0 AND GPL-2.0-or-later AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-or-later AND MIT AND MPL-1.1 +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: http://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: http://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: fdupes +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: gperf +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: sonic-rpm-macros +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qttools-devel + +Requires: kf6-filesystem + +Provides: kf6-kcodecs = %{version}-%{release} +Conflicts: kf6-kcodecs < %{version}-%{release} + +%description +KDE Frameworks 6 Tier 1 addon with string manipulation methods. + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Requires: qt6-qtbase-devel +Provides: kf6-kcodecs-devel = %{version}-%{release} +Conflicts: kf6-kcodecs-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kcodecs-doc = %{version}-%{release} +Conflicts: kf6-kcodecs-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kcodecs-html = %{version}-%{release} +Conflicts: kf6-kcodecs-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang_kf6 kcodecs6_qt +%fdupes LICENSES + +%files -f kcodecs6_qt.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/*categories +%{_kf6_libdir}/libKF6Codecs.so.* + +%files devel +%{_kf6_includedir}/KCodecs/ +%{_kf6_libdir}/libKF6Codecs.so +%{_kf6_libdir}/cmake/KF6Codecs/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-text-editor/sonic-frameworks-text-editor.spec b/sonic-frameworks-text-editor/sonic-frameworks-text-editor.spec new file mode 100644 index 0000000..5781575 --- /dev/null +++ b/sonic-frameworks-text-editor/sonic-frameworks-text-editor.spec @@ -0,0 +1,141 @@ +# Generated for SonicDE from Fedora's kf6-ktexteditor.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-text-editor fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-text-editor +# Upstream KDE project: ktexteditor +%global oldname kf6-ktexteditor + +%global framework ktexteditor + +#Name: kf6-%%{framework} +Name: sonic-frameworks-text-editor +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 3 with advanced embeddable text editor + +License: BSD-2-Clause AND CC0-1.0 AND LGPL-2.0-only AND LGPL-2.0-or-later AND MIT +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: cmake(KF6Archive) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6Parts) +BuildRequires: cmake(KF6ColorScheme) +BuildRequires: sonic-rpm-macros +BuildRequires: pkgconfig(Qt6TextToSpeech) +BuildRequires: pkgconfig(Qt6Widgets) +BuildRequires: pkgconfig(Qt6PrintSupport) +BuildRequires: pkgconfig(Qt6Qml) +BuildRequires: pkgconfig(Qt6Xml) +BuildRequires: cmake(KF6SyntaxHighlighting) +BuildRequires: pkgconfig(editorconfig) +BuildRequires: pkgconfig(xkbcommon) +Requires: kf6-filesystem +Requires: git-core + +Provides: kf6-ktexteditor = %{version}-%{release} +Conflicts: kf6-ktexteditor < %{version}-%{release} + +%description +KTextEditor provides a powerful text editor component that you can embed in your +application, either as a KPart or using the KF6::TextEditor library (if you need +more control). + +The text editor component contains many useful features, from syntax +highlighting and automatic indentation to advanced scripting support, making it +suitable for everything from a simple embedded text-file editor to an advanced +IDE. + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Requires: cmake(KF6Parts) +Requires: cmake(KF6SyntaxHighlighting) +#Requires: kf6-syntax-highlighting-devel +Provides: kf6-ktexteditor-devel = %{version}-%{release} +Conflicts: kf6-ktexteditor-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-ktexteditor-doc = %{version}-%{release} +Conflicts: kf6-ktexteditor-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-ktexteditor-html = %{version}-%{release} +Conflicts: kf6-ktexteditor-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang %{oldname} --all-name +# create/own dirs +mkdir -p %{buildroot}%{_kf6_qtplugindir}/ktexteditor +# Removing empty file +rm -f %{buildroot}%{_kf6_datadir}/katepart5/script/README.md + +%files -f %{name}.lang +%dir %{_kf6_plugindir}/parts/ +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/dbus-1/system-services/org.kde.ktexteditor6.katetextbuffer.service +%{_kf6_datadir}/dbus-1/system.d/org.kde.ktexteditor6.katetextbuffer.conf +%{_kf6_datadir}/polkit-1/actions/org.kde.ktexteditor6.katetextbuffer.policy +%{_kf6_datadir}/qlogging-categories6/%{framework}.* +%{_kf6_libdir}/libKF6TextEditor.so.* +%{_kf6_plugindir}/parts/katepart.so +%{_kf6_qtplugindir}/ktexteditor/ +%{_kf6_libexecdir}/kauth/kauth_ktexteditor_helper +%{_kf6_bindir}/ktexteditor-script-tester6 + +%files devel +%{_kf6_datadir}/kdevappwizard/templates/ktexteditor6-plugin.tar.bz2 +%{_kf6_includedir}/KTextEditor/ +%{_kf6_libdir}/cmake/KF6TextEditor/ +%{_kf6_libdir}/libKF6TextEditor.so +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-text-widgets/sonic-frameworks-text-widgets.spec b/sonic-frameworks-text-widgets/sonic-frameworks-text-widgets.spec new file mode 100644 index 0000000..249fcd9 --- /dev/null +++ b/sonic-frameworks-text-widgets/sonic-frameworks-text-widgets.spec @@ -0,0 +1,120 @@ +# Generated for SonicDE from Fedora's kf6-ktextwidgets.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-text-widgets fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-text-widgets +# Upstream KDE project: ktextwidgets +%global oldname kf6-ktextwidgets + +%global framework ktextwidgets + +#Name: kf6-%%{framework} +Name: sonic-frameworks-text-widgets +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 3 addon with advanced text editing widgets + +License: CC0-1.0 AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-or-later AND LGPL-3.0-only AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: sonic-rpm-macros +BuildRequires: qt6-qtbase-devel +BuildRequires: cmake(Qt6UiPlugin) +BuildRequires: cmake(Qt6TextToSpeech) +BuildRequires: cmake(Qt6QmlIntegration) +BuildRequires: cmake(KF6Completion) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6ConfigWidgets) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6Service) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: cmake(KF6Sonnet) +BuildRequires: cmake(KF6ColorScheme) + +BuildRequires: pkgconfig(xkbcommon) + +Requires: kf6-filesystem + +Provides: kf6-ktextwidgets = %{version}-%{release} +Conflicts: kf6-ktextwidgets < %{version}-%{release} + +%description +KDE Frameworks 6 Tier 3 addon with advanced text edting widgets. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: cmake(KF6I18n) +Requires: cmake(KF6Sonnet) +Requires: qt6-qtbase-devel +Provides: kf6-ktextwidgets-devel = %{version}-%{release} +Conflicts: kf6-ktextwidgets-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-ktextwidgets-doc = %{version}-%{release} +Conflicts: kf6-ktextwidgets-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-ktextwidgets-html = %{version}-%{release} +Conflicts: kf6-ktextwidgets-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang %{oldname} --all-name + +%files -f %{name}.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_libdir}/libKF6TextWidgets.so.* + +%files devel +%{_kf6_includedir}/KTextWidgets/ +%{_kf6_libdir}/libKF6TextWidgets.so +%{_kf6_libdir}/cmake/KF6TextWidgets/ +%{_kf6_qtplugindir}/designer/ktextwidgets6widgets.so +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-ui-components/sonic-frameworks-ui-components.spec b/sonic-frameworks-ui-components/sonic-frameworks-ui-components.spec new file mode 100644 index 0000000..66759b4 --- /dev/null +++ b/sonic-frameworks-ui-components/sonic-frameworks-ui-components.spec @@ -0,0 +1,125 @@ +# Generated for SonicDE from Fedora's kf6-kparts.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-ui-components fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-ui-components +# Upstream KDE project: kparts +%global oldname kf6-kparts + +%global framework kparts + +#Name: kf6-%%{framework} +Name: sonic-frameworks-ui-components +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 3 solution for KParts + +License: CC0-1.0 AND GPL-2.0-or-later AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-or-later AND LGPL-3.0-only AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6JobWidgets) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6Service) +BuildRequires: cmake(KF6TextWidgets) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: cmake(KF6XmlGui) +BuildRequires: cmake(KF6ColorScheme) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: sonic-rpm-macros +BuildRequires: qt6-qtbase-devel +BuildRequires: pkgconfig(xkbcommon) +Requires: kf6-filesystem + +Provides: kf6-kparts = %{version}-%{release} +Conflicts: kf6-kparts < %{version}-%{release} + +%description +KDE Frameworks 6 Tier 3 solution for KParts + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: cmake(KF6KIO) +Requires: cmake(KF6TextWidgets) +Requires: cmake(KF6XmlGui) +Provides: kf6-kparts-devel = %{version}-%{release} +Conflicts: kf6-kparts-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kparts-doc = %{version}-%{release} +Conflicts: kf6-kparts-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kparts-html = %{version}-%{release} +Conflicts: kf6-kparts-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang %{oldname} --all-name --with-html +# create/own parts plugin dir +mkdir -p %{buildroot}%{_kf6_plugindir}/parts/ + +%files -f %{name}.lang +%doc README.md AUTHORS +%license LICENSES/*.txt +%{_kf6_libdir}/libKF6Parts.so.* +%{_kf6_datadir}/qlogging-categories6/%{framework}.* +%dir %{_kf6_plugindir}/parts/ + +%files devel +%{_kf6_includedir}/KParts/ +%{_kf6_libdir}/libKF6Parts.so +%{_kf6_libdir}/cmake/KF6Parts/ +%dir %{_kf6_datadir}/kdevappwizard/ +%dir %{_kf6_datadir}/kdevappwizard/templates/ +%{_kf6_datadir}/kdevappwizard/templates/kparts6-app.tar.bz2 +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-unit-conversion/sonic-frameworks-unit-conversion.spec b/sonic-frameworks-unit-conversion/sonic-frameworks-unit-conversion.spec new file mode 100644 index 0000000..a1f4db9 --- /dev/null +++ b/sonic-frameworks-unit-conversion/sonic-frameworks-unit-conversion.spec @@ -0,0 +1,125 @@ +# Generated for SonicDE from Fedora's kf6-kunitconversion.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-unit-conversion fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-unit-conversion +# Upstream KDE project: kunitconversion +%global oldname kf6-kunitconversion + +%global framework kunitconversion + +#Name: kf6-%%{framework} +Name: sonic-frameworks-unit-conversion +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 2 addon for unit conversions + +License: CC0-1.0 AND LGPL-2.0-or-later +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: cmake(KF6I18n) +BuildRequires: sonic-rpm-macros +BuildRequires: qt6-qtbase-devel + +# required for pyside6 python bindings +BuildRequires: python3-devel +BuildRequires: python3-build +BuildRequires: python3-setuptools +BuildRequires: python3-wheel +BuildRequires: clang-devel +BuildRequires: cmake(Shiboken6) +BuildRequires: cmake(PySide6) + +Requires: kf6-filesystem + +Provides: kf6-kunitconversion = %{version}-%{release} +Conflicts: kf6-kunitconversion < %{version}-%{release} + +%description +KDE Frameworks 6 Tier 2 addon for unit conversions. + +%package -n python3-%{name} +Summary: Qt for Python bindings for %{name} +Provides: python3-kf6-kunitconversion = %{version}-%{release} +Conflicts: python3-kf6-kunitconversion < %{version}-%{release} + +%description -n python3-%{name} +The package contains the pyside6 bindings library for %{name} + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: qt6-qtbase-devel +Provides: kf6-kunitconversion-devel = %{version}-%{release} +Conflicts: kf6-kunitconversion-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kunitconversion-doc = %{version}-%{release} +Conflicts: kf6-kunitconversion-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kunitconversion-html = %{version}-%{release} +Conflicts: kf6-kunitconversion-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang %{oldname} --all-name --with-man + +%files -f %{name}.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_libdir}/libKF6UnitConversion.so.* +%{_kf6_datadir}/qlogging-categories6/%{framework}.* + +%files -n python3-%{name} +%{python3_sitearch}/KUnitConversion.cpython-%{python3_version_nodots}*.so + +%files devel +%{_kf6_includedir}/KUnitConversion/ +%{_kf6_libdir}/libKF6UnitConversion.so +%{_kf6_libdir}/cmake/KF6UnitConversion/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-user-feedback/sonic-frameworks-user-feedback.spec b/sonic-frameworks-user-feedback/sonic-frameworks-user-feedback.spec new file mode 100644 index 0000000..c400e04 --- /dev/null +++ b/sonic-frameworks-user-feedback/sonic-frameworks-user-feedback.spec @@ -0,0 +1,159 @@ +# Generated for SonicDE from Fedora's kf6-kuserfeedback.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-user-feedback fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-user-feedback +# Upstream KDE project: kuserfeedback +%global oldname kf6-kuserfeedback + +%global framework kuserfeedback + +#Name: kf6-%%{framework} +Name: sonic-frameworks-user-feedback +Summary: Framework for collecting user feedback for apps via telemetry and surveys +Version: 6.29.0 +Release: 1%{?dist} + +License: MIT AND CC0-1.0 AND BSD-3-Clause +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +## upstream patches + +BuildRequires: cmake +BuildRequires: gnupg2 +BuildRequires: gcc-c++ + +BuildRequires: sonic-rpm-macros +BuildRequires: libappstream-glib +BuildRequires: desktop-file-utils +BuildRequires: sonic-frameworks-cmake-modules + +BuildRequires: cmake(Qt6Qml) +BuildRequires: cmake(Qt6Svg) +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6Test) +BuildRequires: cmake(Qt6Charts) +BuildRequires: cmake(Qt6Network) +BuildRequires: cmake(Qt6Widgets) +BuildRequires: cmake(Qt6PrintSupport) +BuildRequires: cmake(Qt6LinguistTools) + +BuildRequires: bison +BuildRequires: flex + +Provides: kf6-kuserfeedback = %{version}-%{release} +Conflicts: kf6-kuserfeedback < %{version}-%{release} + +%description +%{summary}. + +%package console +Summary: Analytics and administration tool for UserFeedback servers +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: qt6-qtcharts%{?_isa} +# Obsolete the qt5 version +Obsoletes: kuserfeedback-console < %{version}-%{release} +Provides: kuserfeedback-console = %{version}-%{release} +Provides: kuserfeedback-console%{?_isa} = %{version}-%{release} + +Provides: kf6-kuserfeedback-console = %{version}-%{release} +Conflicts: kf6-kuserfeedback-console < %{version}-%{release} + +%description console +Analytics and administration tool for UserFeedback servers. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: cmake(Qt6Network) +Requires: cmake(Qt6Widgets) + +Provides: kf6-kuserfeedback-devel = %{version}-%{release} +Conflicts: kf6-kuserfeedback-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kuserfeedback-doc = %{version}-%{release} +Conflicts: kf6-kuserfeedback-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kuserfeedback-html = %{version}-%{release} +Conflicts: kf6-kuserfeedback-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 \ + -DENABLE_DOCS:BOOL=OFF \ + -DENABLE_CONSOLE=ON + +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang userfeedbackconsole6 --with-qt +%find_lang userfeedbackprovider6 --with-qt + + +%check +appstream-util validate-relax --nonet %{buildroot}%{_kf6_metainfodir}/org.kde.kuserfeedback-console.appdata.xml +desktop-file-validate %{buildroot}%{_datadir}/applications/org.kde.kuserfeedback-console.desktop + + +%files -f userfeedbackprovider6.lang +%doc README.md +%license LICENSES/* +%{_bindir}/userfeedbackctl +%{_libdir}/libKF6UserFeedbackCore.so.* +%{_libdir}/libKF6UserFeedbackWidgets.so.* +%{_kf6_qmldir}/org/kde/userfeedback/ +%{_kf6_datadir}/qlogging-categories6/org_kde_UserFeedback.categories + +%files console -f userfeedbackconsole6.lang +%{_bindir}/UserFeedbackConsole +%{_datadir}/applications/org.kde.kuserfeedback-console.desktop +%{_kf6_metainfodir}/org.kde.kuserfeedback-console.appdata.xml + +%files devel +%{_kf6_includedir}/KUserFeedback/ +%{_kf6_includedir}/KUserFeedbackCore/ +%{_kf6_includedir}/KUserFeedbackWidgets/ +%{_libdir}/libKF6UserFeedbackCore.so +%{_libdir}/libKF6UserFeedbackWidgets.so +%{_kf6_libdir}/cmake/KF6UserFeedback/ +%{_kf6_archdatadir}/mkspecs/modules/qt_KF6UserFeedback*.pri +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-via/sonic-frameworks-via.spec b/sonic-frameworks-via/sonic-frameworks-via.spec new file mode 100644 index 0000000..da46d75 --- /dev/null +++ b/sonic-frameworks-via/sonic-frameworks-via.spec @@ -0,0 +1,60 @@ +# Written from scratch: SonicVia has no KDE or Fedora counterpart. It replaces +# the qmk-via-api Rust crate used by the QMK D-Bus helper. +%define _disable_source_fetch 0 +%global debug_package %{nil} +%global reponame sonic-frameworks-via + +Name: sonic-frameworks-via +Version: 6.29.0 +Release: 1%{?dist} +Summary: VIA HID keyboard protocol library for SonicDE +License: BSD-2-Clause AND LGPL-2.1-only AND LGPL-3.0-only AND MIT +URL: https://github.com/Sonic-DE/%{reponame} +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6Gui) +# Without hidapi the library builds as a stub. +BuildRequires: pkgconfig(hidapi-hidraw) + +%description +SonicVia implements the QMK VIA HID protocol for RGB lighting control of +keyboards, as used by SonicDE's QMK D-Bus helper. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: cmake(Qt6Core) +Requires: cmake(Qt6Gui) + +%description devel +%{summary}. + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 -DBUILD_TESTING:BOOL=OFF -DBUILD_QCH:BOOL=OFF +%cmake_build + +%install +%cmake_install + +%files +%license LICENSE LICENSES/* +%doc README.md +%{_libdir}/libSonicVia.so.6* + +%files devel +%{_includedir}/via/ +%{_includedir}/sonicvia_version.h +%{_libdir}/libSonicVia.so +%{_libdir}/cmake/SonicVia/ + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-widgets-addons/sonic-frameworks-widgets-addons.spec b/sonic-frameworks-widgets-addons/sonic-frameworks-widgets-addons.spec new file mode 100644 index 0000000..54290b7 --- /dev/null +++ b/sonic-frameworks-widgets-addons/sonic-frameworks-widgets-addons.spec @@ -0,0 +1,131 @@ +# Generated for SonicDE from Fedora's kf6-kwidgetsaddons.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-widgets-addons fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-widgets-addons +# Upstream KDE project: kwidgetsaddons +%global oldname kf6-kwidgetsaddons + +%global framework kwidgetsaddons + +#Name: kf6-%%{framework} +Name: sonic-frameworks-widgets-addons +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 1 addon with various classes on top of QtWidgets +License: BSD-3-Clause AND CC0-1.0 AND GPL-2.0-or-later AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only AND LGPL-3.0-or-later +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: http://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: http://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: sonic-frameworks-cmake-modules >= %{majmin_ver_kf6} +BuildRequires: sonic-rpm-macros +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qttools-devel +BuildRequires: qt6-qttools-static +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: fdupes + +# required for pyside6 python bindings +BuildRequires: python3-devel +BuildRequires: python3-build +BuildRequires: python3-setuptools +BuildRequires: python3-wheel +BuildRequires: clang-devel +BuildRequires: cmake(Shiboken6) +BuildRequires: cmake(PySide6) + +Requires: kf6-filesystem + +Provides: kf6-kwidgetsaddons = %{version}-%{release} +Conflicts: kf6-kwidgetsaddons < %{version}-%{release} + +%description +KDE Frameworks 6 Tier 1 addon with various classes on top of QtWidgets. + +%package -n python3-%{name} +Summary: Qt for Python bindings for %{name} +Provides: python3-kf6-kwidgetsaddons = %{version}-%{release} +Conflicts: python3-kf6-kwidgetsaddons < %{version}-%{release} + +%description -n python3-%{name} +The package contains the pyside6 bindings library for %{name} + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Requires: qt6-qtbase-devel +Provides: kf6-kwidgetsaddons-devel = %{version}-%{release} +Conflicts: kf6-kwidgetsaddons-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kwidgetsaddons-doc = %{version}-%{release} +Conflicts: kf6-kwidgetsaddons-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kwidgetsaddons-html = %{version}-%{release} +Conflicts: kf6-kwidgetsaddons-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang_kf6 kwidgetsaddons6_qt +%fdupes %{buildroot}/%{_kf6_includedir}/KWidgetsAddons/ +%fdupes LICENSES + +%files -f kwidgetsaddons6_qt.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_libdir}/libKF6WidgetsAddons.so.* +%{_kf6_datadir}/qlogging-categories6/*categories + +%files -n python3-%{name} +%{python3_sitearch}/KWidgetsAddons.cpython-%{python3_version_nodots}*.so + +%files devel +%{_kf6_includedir}/KWidgetsAddons/ +%{_kf6_libdir}/libKF6WidgetsAddons.so +%{_kf6_libdir}/cmake/KF6WidgetsAddons/ +%{_kf6_qtplugindir}/designer/kwidgetsaddons6widgets.so +%{_kf6_datadir}/PySide6/typesystems/typesystem_kwidgetsaddons.xml +%{_includedir}/PySide6/KWidgetsAddons/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-windowsystem/sonic-frameworks-windowsystem.spec b/sonic-frameworks-windowsystem/sonic-frameworks-windowsystem.spec index b09ee9d..d1d993f 100644 --- a/sonic-frameworks-windowsystem/sonic-frameworks-windowsystem.spec +++ b/sonic-frameworks-windowsystem/sonic-frameworks-windowsystem.spec @@ -3,25 +3,25 @@ %global framework kwindowsystem -#Name: kf6-%{framework} +#Name: kf6-%%{framework} Name: sonic-frameworks-windowsystem -Version: 6.25.0 -Release: 1%{?dist} +Version: 6.29.0 +Release: 1%{?dist} Summary: KDE Frameworks 6 Tier 1 integration module with classes for windows management License: CC0-1.0 AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only AND MIT -#URL: https://invent.kde.org/frameworks/%{framework} +#URL: https://invent.kde.org/frameworks/%%{framework} URL: https://github.com/Sonic-DE/sonic-frameworks-windowsystem -#Source0: https://download.kde.org/%{stable_kf6}/frameworks/%{majmin_ver_kf6}/%{framework}-%{version}.tar.xz -#Source1: https://download.kde.org/%{stable_kf6}/frameworks/%{majmin_ver_kf6}/%{framework}-%{version}.tar.xz.sig +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz # Upstream patches BuildRequires: cmake BuildRequires: gcc-c++ -BuildRequires: extra-cmake-modules >= %{version} -BuildRequires: kf6-rpm-macros +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: sonic-rpm-macros BuildRequires: make BuildRequires: qt6-qtbase-devel BuildRequires: qt6-qttools-devel @@ -94,7 +94,7 @@ Developer Documentation files for %{name} in HTML format %dir %{_kf6_plugindir}/kwindowsystem/ %{_kf6_plugindir}/kwindowsystem/KF6WindowSystemX11Plugin.so %{_kf6_qmldir}/org/kde/kwindowsystem -#%{_qt6_plugindir}/kf6/kwindowsystem/KF6WindowSystemKWaylandPlugin.so +#%%{_qt6_plugindir}/kf6/kwindowsystem/KF6WindowSystemKWaylandPlugin.so %files devel %{_kf6_includedir}/KWindowSystem/ @@ -114,6 +114,9 @@ Developer Documentation files for %{name} in HTML format %changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- Update to SonicDE 6.29.0 from the hard fork; build on Enterprise Linux 10 and Fedora + * Thu Apr 09 2026 Steve Cossette - 6.25.0-1 - 6.25.0 diff --git a/sonic-frameworks-xml-gui/sonic-frameworks-xml-gui.spec b/sonic-frameworks-xml-gui/sonic-frameworks-xml-gui.spec new file mode 100644 index 0000000..66cb5af --- /dev/null +++ b/sonic-frameworks-xml-gui/sonic-frameworks-xml-gui.spec @@ -0,0 +1,145 @@ +# Generated for SonicDE from Fedora's kf6-kxmlgui.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-xml-gui fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-xml-gui +# Upstream KDE project: kxmlgui +%global oldname kf6-kxmlgui + +%global framework kxmlgui + +#Name: kf6-%%{framework} +Name: sonic-frameworks-xml-gui +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 3 solution for user-configurable main windows + +License: BSD-2-Clause AND CC0-1.0 AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: cmake(KF6GlobalAccel) +BuildRequires: sonic-rpm-macros +BuildRequires: libX11-devel +BuildRequires: qt6-qtbase-devel +BuildRequires: cmake(KF6ColorScheme) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6ConfigWidgets) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: cmake(KF6ItemViews) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: cmake(Qt6UiPlugin) +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: qt6-qtbase-private-devel + +# required for pyside6 python bindings +BuildRequires: python3-devel +BuildRequires: python3-build +BuildRequires: python3-setuptools +BuildRequires: python3-wheel +BuildRequires: clang-devel +BuildRequires: cmake(Shiboken6) +BuildRequires: cmake(PySide6) + +Requires: kf6-filesystem + +Provides: kf6-kxmlgui = %{version}-%{release} +Conflicts: kf6-kxmlgui < %{version}-%{release} + +%description +KDE Frameworks 6 Tier 3 solution for user-configurable main windows. + +%package -n python3-%{name} +Summary: Qt for Python bindings for %{name} +Provides: python3-kf6-kxmlgui = %{version}-%{release} +Conflicts: python3-kf6-kxmlgui < %{version}-%{release} + +%description -n python3-%{name} +The package contains the pyside6 bindings library for %{name} + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: cmake(KF6Config) +Requires: cmake(KF6ConfigWidgets) +Requires: cmake(KF6GuiAddons) +Requires: qt6-qtbase-devel +Provides: kf6-kxmlgui-devel = %{version}-%{release} +Conflicts: kf6-kxmlgui-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kxmlgui-doc = %{version}-%{release} +Conflicts: kf6-kxmlgui-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kxmlgui-html = %{version}-%{release} +Conflicts: kf6-kxmlgui-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +# Own the kxmlgui directory +mkdir -p %{buildroot}%{_kf6_datadir}/kxmlgui5/ +%find_lang %{oldname} --all-name + +%files -f %{name}.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_datadir}/qlogging-categories6/%{framework}.* +%{_kf6_libdir}/libKF6XmlGui.so.* +%dir %{_kf6_datadir}/kxmlgui5/ + +%files -n python3-%{name} +%{python3_sitearch}/KXmlGui.cpython-%{python3_version_nodots}*.so + +%files devel +%{_kf6_qtplugindir}/designer/*6widgets.so +%{_kf6_includedir}/KXmlGui/ +%{_kf6_libdir}/libKF6XmlGui.so +%{_kf6_libdir}/cmake/KF6XmlGui/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-frameworks-zeroconf/sonic-frameworks-zeroconf.spec b/sonic-frameworks-zeroconf/sonic-frameworks-zeroconf.spec new file mode 100644 index 0000000..c23a8a6 --- /dev/null +++ b/sonic-frameworks-zeroconf/sonic-frameworks-zeroconf.spec @@ -0,0 +1,104 @@ +# Generated for SonicDE from Fedora's kf6-kdnssd.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-frameworks-zeroconf fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-frameworks-zeroconf +# Upstream KDE project: kdnssd +%global oldname kf6-kdnssd + +%global framework kdnssd + +#Name: kf6-%%{framework} +Name: sonic-frameworks-zeroconf +Version: 6.29.0 +Release: 1%{?dist} +Summary: KDE Frameworks 6 Tier 1 integration module for DNS-SD services (Zeroconf) +License: BSD-3-Clause AND CC0-1.0 AND LGPL-2.0-or-later +#URL: https://invent.kde.org/frameworks/%%{framework} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/frameworks/%%{majmin_ver_kf6}/%%{framework}-%%{version}.tar.xz.sig + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: avahi-devel +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: sonic-rpm-macros +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qttools-devel + +Requires: nss-mdns +Requires: kf6-filesystem + +Provides: kf6-kdnssd = %{version}-%{release} +Conflicts: kf6-kdnssd < %{version}-%{release} + +%description +KDE Frameworks 6 Tier 1 integration module for DNS-SD services (Zeroconf) + +%package devel +Summary: Development files for %{name} +Requires: %{name} = %{version}-%{release} +Requires: qt6-qtbase-devel +Provides: kf6-kdnssd-devel = %{version}-%{release} +Conflicts: kf6-kdnssd-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kdnssd-doc = %{version}-%{release} +Conflicts: kf6-kdnssd-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: kf6-kdnssd-html = %{version}-%{release} +Conflicts: kf6-kdnssd-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 + +%find_lang_kf6 kdnssd6_qt + +%files -f kdnssd6_qt.lang +%doc README.md +%license LICENSES/*.txt +%{_kf6_libdir}/libKF6DNSSD.so.* + +%files devel +%{_kf6_includedir}/KDNSSD/ +%{_kf6_libdir}/libKF6DNSSD.so +%{_kf6_libdir}/cmake/KF6DNSSD/ +%{_qt6_docdir}/*/*.tags +%{_qt6_docdir}/*/*.index + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-gtk-theme-bridge/sonic-gtk-theme-bridge.spec b/sonic-gtk-theme-bridge/sonic-gtk-theme-bridge.spec new file mode 100644 index 0000000..ae9b0e8 --- /dev/null +++ b/sonic-gtk-theme-bridge/sonic-gtk-theme-bridge.spec @@ -0,0 +1,97 @@ +# Generated for SonicDE from Fedora's kde-gtk-config.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-gtk-theme-bridge fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-gtk-theme-bridge +# Upstream KDE project: kde-gtk-config +%global oldname kde-gtk-config + + +# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} + +#Name: kde-gtk-config +Name: sonic-gtk-theme-bridge +Summary: Configure the appearance of GTK apps in KDE +Version: 6.7.4 +Release: 1%{?dist} + +License: BSD-2-Clause AND BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/kde-gtk-config-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/kde-gtk-config-%%{version}.tar.xz.sig + +# upstream patches + +## upstreamable patches + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtsvg-devel + +BuildRequires: cmake(KDecoration3) +BuildRequires: cmake(KF6ColorScheme) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6WindowSystem) + +BuildRequires: gsettings-desktop-schemas-devel +BuildRequires: gtk3-devel +BuildRequires: gtk2-devel +BuildRequires: sassc + +# dir ownership +Requires: sonic-silver-gtk-common +# need kcmshell5 from kde-cli-tools +Requires: sonic-terminal-tools + +# runtime dep checked-for at buildtime +BuildRequires: xsettingsd +# avoid hard dep for now -- rex +Recommends: xsettingsd + +Provides: kde-gtk-config = %{version}-%{release} +Conflicts: kde-gtk-config < %{version}-%{release} + +%description +This is a System Settings configuration module for configuring the +appearance of GTK apps in KDE. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build + + +%install +%cmake_install + + +%files +%license LICENSES/*.txt +%{_libexecdir}/gtk3_preview +%{_libdir}/kconf_update_bin/gtk_theme +%{_datadir}/kconf_update/gtkconfig.upd +%{_datadir}/kconf_update/remove_window_decorations_from_gtk_css.sh +%{_libdir}/kconf_update_bin/remove_deprecated_gtk4_option_v2 +%{_kf6_plugindir}/kded/gtkconfig.so +%{_libdir}/gtk-3.0/modules/libcolorreload-gtk-module.so +%{_libdir}/gtk-3.0/modules/libwindow-decorations-gtk-module.so +%{_datadir}/themes/Breeze/window_decorations.css +%{_datadir}/kcm-gtk-module/ +%{_datadir}/qlogging-categories6/kde-gtk-config.categories + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-interface-libraries/sonic-interface-libraries.spec b/sonic-interface-libraries/sonic-interface-libraries.spec index 772b6e6..96f32de 100644 --- a/sonic-interface-libraries/sonic-interface-libraries.spec +++ b/sonic-interface-libraries/sonic-interface-libraries.spec @@ -3,8 +3,8 @@ #Name: libplasma Name: sonic-interface-libraries -Version: 6.6.4 -Release: 2%{?dist} +Version: 6.7.4 +Release: 1%{?dist} Summary: Plasma is the foundation of the KDE user interface (v6) # LicenseRef-QtCommercial is also in the licenses, but is being omitted as it is optional. @@ -12,13 +12,13 @@ License: BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL- #URL: https://invent.kde.org/plasma/libplasma URL: https://github.com/Sonic-DE/%{name} -#Source0: https://download.kde.org/%{stable_kf6}/plasma/%{version}/%{name}-%{version}.tar.xz -#Source1: https://download.kde.org/%{stable_kf6}/plasma/%{version}/%{name}-%{version}.tar.xz.sig +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz -BuildRequires: extra-cmake-modules +BuildRequires: sonic-frameworks-cmake-modules BuildRequires: gcc-c++ -BuildRequires: kf6-rpm-macros +BuildRequires: sonic-rpm-macros # Qt BuildRequires: cmake(Qt6Quick) @@ -138,6 +138,9 @@ mkdir -p %{buildroot}%{_kf6_qmldir}/org/kde/private %{_qt6_docdir}/*.qch %changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- Update to SonicDE 6.7.4 from the hard fork; build on Enterprise Linux 10 and Fedora + * Fri Apr 10 2026 Steve Cossette - 6.6.4-1 - 6.6.4 diff --git a/sonic-keybind-daemon/sonic-keybind-daemon.spec b/sonic-keybind-daemon/sonic-keybind-daemon.spec index 8b44208..5829ad4 100644 --- a/sonic-keybind-daemon/sonic-keybind-daemon.spec +++ b/sonic-keybind-daemon/sonic-keybind-daemon.spec @@ -4,21 +4,21 @@ #Name: kglobalacceld Name: sonic-keybind-daemon Summary: Daemon providing Global Keyboard Shortcut functionality -Version: 6.6.4 +Version: 6.7.4 Release: 1%{?dist} License: CC0-1.0 AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-3.0-only AND (LGPL-2.1-only OR LGPL-3.0-only) -#URL: https://invent.kde.org/plasma/%{name} +#URL: https://invent.kde.org/plasma/%%{name} URL: https://github.com/Sonic-DE/%{name} -#Source0: https://download.kde.org/%{stable_kf6}/plasma/%{version}/%{name}-%{version}.tar.xz -#Source1: https://download.kde.org/%{stable_kf6}/plasma/%{version}/%{name}-%{version}.tar.xz.sig +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz -BuildRequires: extra-cmake-modules +BuildRequires: sonic-frameworks-cmake-modules BuildRequires: cmake BuildRequires: gcc-c++ -BuildRequires: kf6-rpm-macros +BuildRequires: sonic-rpm-macros BuildRequires: qt6-qtbase-devel BuildRequires: qt6-qtbase-private-devel BuildRequires: qt6-qtbase-gui @@ -80,6 +80,9 @@ Conflicts: kglobalacceld-devel %{_libdir}/cmake/KGlobalAccelD/ %changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- Update to SonicDE 6.7.4 from the hard fork; build on Enterprise Linux 10 and Fedora + * Fri Apr 10 2026 Steve Cossette - 6.6.4-1 - 6.6.4 diff --git a/sonic-launcher-menu-edit/sonic-launcher-menu-edit.spec b/sonic-launcher-menu-edit/sonic-launcher-menu-edit.spec new file mode 100644 index 0000000..ad6d0c9 --- /dev/null +++ b/sonic-launcher-menu-edit/sonic-launcher-menu-edit.spec @@ -0,0 +1,81 @@ +# Generated for SonicDE from Fedora's kmenuedit.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-launcher-menu-edit fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-launcher-menu-edit +# Upstream KDE project: kmenuedit +%global oldname kmenuedit + +#Name: kmenuedit +Name: sonic-launcher-menu-edit +Summary: KDE menu editor +Version: 6.7.4 +Release: 1%{?dist} + +License: CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +BuildRequires: qt6-qtbase-devel + +BuildRequires: desktop-file-utils +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6XmlGui) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6ItemViews) +BuildRequires: cmake(KF6Sonnet) +BuildRequires: cmake(KF6GlobalAccel) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: cmake(KF6Crash) +BuildRequires: cmake(KF6DocTools) +BuildRequires: libappstream-glib + +# when split out from kde-workspace-4.11.x +Conflicts: kde-workspace < 4.11.15-3 + +Provides: kmenuedit = %{version}-%{release} +Conflicts: kmenuedit < %{version}-%{release} + +%description +%{summary}. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build + +%install +%cmake_install +%find_lang kmenuedit5 --with-html --all-name + + +%check +desktop-file-validate %{buildroot}%{_datadir}/applications/org.kde.kmenuedit.desktop +# commented out until upstream fixes a duplicate entries problem +#appstream-util validate-relax --nonet %%{buildroot}%%{_metainfodir}/*.appdata.xml + +%files -f kmenuedit5.lang +%license LICENSES/* +%{_bindir}/kmenuedit +%{_datadir}/kmenuedit/ +%{_datadir}/applications/org.kde.kmenuedit.desktop +%{_datadir}/icons/hicolor/*/apps/kmenuedit.* +%{_kf6_datadir}/qlogging-categories6/kmenuedit.categories +%{_kf6_datadir}/metainfo/org.kde.kmenuedit.appdata.xml + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-login-manager/sonic-login-manager.spec b/sonic-login-manager/sonic-login-manager.spec index e0c9750..db88319 100644 --- a/sonic-login-manager/sonic-login-manager.spec +++ b/sonic-login-manager/sonic-login-manager.spec @@ -1,8 +1,8 @@ Name: sonic-login-manager -Version: 6.6.4 -Release: 12%{?dist} +Version: 6.7.4.4 +Release: 1%{?dist} License: BSD-3-Clause and CC0-1.0 and (GPL-2.0-only or GPL-3.0-only) and GPL-2.0-or-later and LGPL-2.0-or-later and LGPL-2.1-or-later Summary: QML based login manager for SonicDE @@ -14,7 +14,7 @@ Source10: README.scripts # sysconfig snippet Source11: plasmalogin.sysconfig # sysusers config file. note these are shipped in the upstream tarball -# but we cannot use the files from the tarball for %pre scriptlet +# but we cannot use the files from the tarball for %%pre scriptlet # generation, so we duplicate them as source files for that purpose; # this is an ugly hack that should be removed if it becomes possible. # see https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/TFDMAU7KLMSQTKPJELHSM6PFVXIZ56GK/ @@ -34,11 +34,12 @@ Provides: service(graphical-login) = plasmalogin BuildRequires: desktop-file-utils BuildRequires: cmake >= 3.22 -BuildRequires: extra-cmake-modules +BuildRequires: sonic-frameworks-cmake-modules BuildRequires: gcc-c++ BuildRequires: pam-devel BuildRequires: pkgconfig(libsystemd) BuildRequires: pkgconfig(systemd) +BuildRequires: pkgconfig(xau) BuildRequires: pkgconfig(xcb) BuildRequires: pkgconfig(xcb-xkb) BuildRequires: cmake(Qt6Core) @@ -60,7 +61,6 @@ BuildRequires: cmake(KF6Auth) BuildRequires: cmake(KF6KIO) BuildRequires: cmake(KF6KirigamiPlatform) BuildRequires: cmake(PlasmaQuick) -BuildRequires: cmake(LayerShellQt) BuildRequires: cmake(LibKWorkspace) BuildRequires: cmake(LibKLookAndFeel) BuildRequires: cmake(KF6Screen) @@ -68,10 +68,10 @@ BuildRequires: cmake(KF6Screen) BuildRequires: shadow-utils BuildRequires: systemd BuildRequires: systemd-rpm-macros -BuildRequires: kf6-rpm-macros +BuildRequires: sonic-rpm-macros # for jxl support -Requires: kf6-kimageformats%{?_isa} +Requires: sonic-frameworks-image-formats%{?_isa} Requires: xorg-x11-xinit Requires: sonic-login-manager-selinux @@ -79,7 +79,7 @@ Requires: sonic-login-manager-selinux %{?systemd_requires} Requires: kf6-filesystem -Requires: kf6-kauth +Requires: sonic-frameworks-auth Requires(pre): shadow-utils Requires: kde-settings-plasma @@ -105,7 +105,7 @@ Requires: qt6-filesystem %{summary}. %prep -%autosetup -p1 +%autosetup -p1 -n %{name}-%{version} %conf diff --git a/sonic-network-manager/sonic-network-manager.spec b/sonic-network-manager/sonic-network-manager.spec new file mode 100644 index 0000000..54115f1 --- /dev/null +++ b/sonic-network-manager/sonic-network-manager.spec @@ -0,0 +1,365 @@ +# Generated for SonicDE from Fedora's plasma-nm.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-network-manager fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-network-manager +# Upstream KDE project: plasma-nm +%global oldname plasma-nm + + +# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} + +#Name: plasma-nm +Name: sonic-network-manager +Summary: Plasma for managing network connections +Version: 6.7.4 +Release: 1%{?dist} + +License: BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + + +%ifarch %{qt6_qtwebengine_arches} +%bcond openconnect 1 +%else +%bcond openconnect 0 +%endif + +## upstream patches + + +BuildRequires: gettext + +BuildRequires: sonic-rpm-macros +BuildRequires: sonic-frameworks-cmake-modules + +BuildRequires: qt6-qtbase-devel +BuildRequires: cmake(QCoro6) +BuildRequires: cmake(Qca-qt6) +BuildRequires: cmake(Qt6Keychain) + +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6KCMUtils) +BuildRequires: cmake(KF6Service) +BuildRequires: cmake(KF6Completion) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6Wallet) +BuildRequires: cmake(KF6ConfigWidgets) +BuildRequires: cmake(KF6Solid) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6Declarative) +BuildRequires: cmake(KF6NetworkManagerQt) +BuildRequires: cmake(KF6ModemManagerQt) +BuildRequires: cmake(KF6Svg) +BuildRequires: cmake(KF6QuickCharts) +# For some reason, it's not pulling it up on s390x +BuildRequires: pkgconfig(libcrypto) + +# Plasma +BuildRequires: cmake(Plasma) + +# Others +BuildRequires: pkgconfig(cups) + +# Runtime check +BuildRequires: cmake(KF6Prison) +BuildRequires: cmake(KF6Kirigami2) +BuildRequires: qt6qml(org.kde.kirigamiaddons.formcard) +Requires: qt6qml(org.kde.kirigamiaddons.formcard) + +BuildRequires: pkgconfig(ModemManager) >= 1.0.0 +BuildRequires: pkgconfig(libnm) >= 1.0.0 +BuildRequires: pkgconfig(mobile-broadband-provider-info) + +%if %{with openconnect} +BuildRequires: pkgconfig(openconnect) >= 4.00 +BuildRequires: cmake(Qt6WebEngineWidgets) +%else +Obsoletes: %{name}-openconnect < %{version}-%{release} +%endif + +Requires: NetworkManager >= 1.0.0 +Requires: sonic-frameworks-barcode +Requires: sonic-frameworks-quick-ui + +Obsoletes: kde-plasma-networkmanagement < 1:0.9.1.0 +Obsoletes: kde-plasma-networkmanagement-libs < 1:0.9.1.0 +Obsoletes: kde-plasma-nm < 5.0.0-1 +Provides: kde-plasma-nm = %{version}-%{release} + +Provides: plasma-nm = %{version}-%{release} +Conflicts: plasma-nm < %{version}-%{release} + +%description +Plasma applet and editor for managing your network connections in KDE 4 using +the default NetworkManager service. + + +%package openvpn +Summary: OpenVPN support for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: NetworkManager-openvpn +Obsoletes: kde-plasma-networkmanagement-openvpn < 1:0.9.1.0 +Obsoletes: kde-plasma-nm-openvpn < 5.0.0-1 +Provides: kde-plasma-nm-openvpn = %{version}-%{release} +Provides: plasma-nm-openvpn = %{version}-%{release} +Conflicts: plasma-nm-openvpn < %{version}-%{release} + +%description openvpn +%{summary}. + +%if %{with openconnect} +%package openconnect +Summary: OpenConnect support for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: NetworkManager-openconnect +Obsoletes: kde-plasma-networkmanagement-openconnect < 1:0.9.1.0 +Obsoletes: kde-plasma-nm-openconnect < 5.0.0-1 +Provides: kde-plasma-nm-openconnect = %{version}-%{release} +Provides: deprecated() +Provides: plasma-nm-openconnect = %{version}-%{release} +Conflicts: plasma-nm-openconnect < %{version}-%{release} + +%description openconnect +%{summary}. +%endif + +%package openswan +Summary: Openswan support for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: NetworkManager-openswan +Obsoletes: kde-plasma-nm-openswan < 5.0.0-1 +Provides: kde-plasma-nm-openswan = %{version}-%{release} +Provides: plasma-nm-openswan = %{version}-%{release} +Conflicts: plasma-nm-openswan < %{version}-%{release} + +%description openswan +%{summary}. + +%package strongswan +Summary: Strongswan support for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: strongswan +Obsoletes: kde-plasma-nm-strongswan < 5.0.0-1 +Provides: kde-plasma-nm-strongswan = %{version}-%{release} +Provides: plasma-nm-strongswan = %{version}-%{release} +Conflicts: plasma-nm-strongswan < %{version}-%{release} + +%description strongswan +%{summary}. + +%package l2tp +Summary: L2TP support for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: NetworkManager-l2tp +Obsoletes: kde-plasma-nm-l2tp < 5.0.0-1 +Provides: kde-plasma-nm-l2tp = %{version}-%{release} +Provides: plasma-nm-l2tp = %{version}-%{release} +Conflicts: plasma-nm-l2tp < %{version}-%{release} + +%description l2tp +%{summary}. + +%package pptp +Summary: PPTP support for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: NetworkManager-pptp +Obsoletes: kde-plasma-networkmanagement-pptp < 1:0.9.1.0 +Obsoletes: kde-plasma-nm-pptp < 5.0.0-1 +Provides: kde-plasma-nm-pptp = %{version}-%{release} +Provides: plasma-nm-pptp = %{version}-%{release} +Conflicts: plasma-nm-pptp < %{version}-%{release} + +%description pptp +%{summary}. + +%package sstp +Summary: SSTP support for %{name} +Requires: NetworkManager-sstp +Requires: %{name}%{?_isa} = %{version}-%{release} +Provides: plasma-nm-sstp = %{version}-%{release} +Conflicts: plasma-nm-sstp < %{version}-%{release} + +%description sstp +%{summary}. + +%package fortisslvpn +Summary: Fortigate SSL VPN support for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: NetworkManager-fortisslvpn +Provides: plasma-nm-fortisslvpn = %{version}-%{release} +Conflicts: plasma-nm-fortisslvpn < %{version}-%{release} + +%description fortisslvpn +%{summary}. + +%if 0%{?fedora} +%package vpnc +Summary: Vpnc support for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: NetworkManager-vpnc +Obsoletes: kde-plasma-networkmanagement-vpnc < 1:0.9.1.0 +Obsoletes: kde-plasma-nm-vpnc < 5.0.0-1 +Provides: kde-plasma-nm-vpnc = %{version}-%{release} +Provides: plasma-nm-vpnc = %{version}-%{release} +Conflicts: plasma-nm-vpnc < %{version}-%{release} + +%description vpnc +%{summary}. + +%package ssh +Summary: SSH suppor for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: NetworkManager-ssh +Provides: plasma-nm-ssh = %{version}-%{release} +Conflicts: plasma-nm-ssh < %{version}-%{release} + +%description ssh +%{summary}. + +%package iodine +Summary: Iodine support for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: NetworkManager-iodine +Provides: plasma-nm-iodine = %{version}-%{release} +Conflicts: plasma-nm-iodine < %{version}-%{release} + +%description iodine +%{summary}. +%endif + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 \ + %{!?with_openconnect:-DBUILD_OPENCONNECT=OFF} \ + %{nil} + +%cmake_build + + +%install +%cmake_install + +%if ! 0%{?fedora} +rm -f %{buildroot}%{_kf6_qtplugindir}/plasma/network/vpn/plasmanetworkmanagement_vpncui.so +rm -f %{buildroot}%{_kf6_qtplugindir}/plasma/network/vpn/plasmanetworkmanagement_sshui.so +rm -f %{buildroot}%{_kf6_qtplugindir}/plasma/network/vpn/plasmanetworkmanagement_iodineui.so +rm -f %{buildroot}/usr/share/locale/*/LC_MESSAGES/plasmanetworkmanagement_iodineui.mo +rm -f %{buildroot}/usr/share/locale/*/LC_MESSAGES/plasmanetworkmanagement_sshui.mo +rm -f %{buildroot}/usr/share/locale/*/LC_MESSAGES/plasmanetworkmanagement_vpncui.mo +%endif +%if %{without openconnect} +rm -f %{buildroot}/usr/share/locale/*/LC_MESSAGES/plasmanetworkmanagement_openconnectui.mo +%endif + +%find_lang plasma_applet_org.kde.plasma.networkmanagement +%find_lang plasmanetworkmanagement-kded +%find_lang plasmanetworkmanagement-kcm +%find_lang plasmanetworkmanagement-libs +%find_lang plasmanetworkmanagement_openvpnui +%find_lang kcm_cellular_network +%find_lang kcm_mobile_hotspot +%find_lang kcm_mobile_wifi +%find_lang kcm_mobile_wired +%if %{with openconnect} +%find_lang plasmanetworkmanagement_openconnectui +%endif +%find_lang plasmanetworkmanagement_libreswanui +%find_lang plasmanetworkmanagement_strongswanui +%find_lang plasmanetworkmanagement_l2tpui +%find_lang plasmanetworkmanagement_pptpui +%find_lang plasmanetworkmanagement_sstpui +%find_lang plasmanetworkmanagement_fortisslvpnui +%if 0%{?fedora} +%find_lang plasmanetworkmanagement_vpncui +%find_lang plasmanetworkmanagement_sshui +%find_lang plasmanetworkmanagement_iodineui +%endif + + +%files -f plasma_applet_org.kde.plasma.networkmanagement.lang -f plasmanetworkmanagement-kded.lang -f plasmanetworkmanagement-libs.lang -f plasmanetworkmanagement-kcm.lang -f kcm_cellular_network.lang -f kcm_mobile_wifi.lang -f kcm_mobile_hotspot.lang -f kcm_mobile_wired.lang +%{_libdir}/libplasmanm_internal.so +%{_libdir}/libplasmanm_editor.so +# plasma-nm applet +%{_qt6_qmldir}/org/kde/plasma/networkmanagement/ +%{_kf6_qtplugindir}/plasma/applets/org.kde.plasma.networkmanagement.so +%{_datadir}/qlogging-categories6/plasma-nm.categories +# plasma-nm notifications +%{_kf6_datadir}/knotifications6/networkmanagement.notifyrc +# plasma-nm kded +%{_kf6_plugindir}/kded/networkmanagement.so +%{_libdir}/libplasmanm_cellular.so + +# kcm +%{_qt6_plugindir}/plasma/kcms/systemsettings_qwidgets/kcm_networkmanagement.so +%{_qt6_plugindir}/plasma/kcms/systemsettings/kcm_cellular_network.so +%{_qt6_plugindir}/plasma/kcms/systemsettings/kcm_mobile_hotspot.so +%{_qt6_plugindir}/plasma/kcms/systemsettings/kcm_mobile_wifi.so +%{_qt6_plugindir}/plasma/kcms/systemsettings/kcm_mobile_wired.so +%{_datadir}/kcm_networkmanagement/qml/ +%{_kf6_datadir}/applications/kcm_networkmanagement.desktop +%{_kf6_datadir}/applications/org.kde.vpnimport.desktop +%{_kf6_datadir}/applications/kcm_cellular_network.desktop +%{_kf6_datadir}/applications/kcm_mobile_hotspot.desktop +%{_kf6_datadir}/applications/kcm_mobile_wifi.desktop +%{_kf6_datadir}/applications/kcm_mobile_wired.desktop + + +%files openvpn -f plasmanetworkmanagement_openvpnui.lang +%{_kf6_qtplugindir}/plasma/network/vpn/plasmanetworkmanagement_openvpnui.so + +%if %{with openconnect} +%files openconnect -f plasmanetworkmanagement_openconnectui.lang +%{_kf6_qtplugindir}/plasma/network/vpn/plasmanetworkmanagement_openconnect_anyconnect.so +%{_kf6_qtplugindir}/plasma/network/vpn/plasmanetworkmanagement_openconnect_globalprotectui.so +%{_kf6_qtplugindir}/plasma/network/vpn/plasmanetworkmanagement_openconnect_juniperui.so +%{_kf6_qtplugindir}/plasma/network/vpn/plasmanetworkmanagement_openconnect_pulseui.so +%{_kf6_qtplugindir}/plasma/network/vpn/plasmanetworkmanagement_openconnect_arrayui.so +%{_kf6_qtplugindir}/plasma/network/vpn/plasmanetworkmanagement_openconnect_f5ui.so +%{_kf6_qtplugindir}/plasma/network/vpn/plasmanetworkmanagement_openconnect_fortinetui.so +%endif + +%files openswan -f plasmanetworkmanagement_libreswanui.lang +%{_kf6_qtplugindir}/plasma/network/vpn/plasmanetworkmanagement_libreswanui.so + +%files strongswan -f plasmanetworkmanagement_strongswanui.lang +%{_kf6_qtplugindir}/plasma/network/vpn/plasmanetworkmanagement_strongswanui.so + +%files l2tp -f plasmanetworkmanagement_l2tpui.lang +%{_kf6_qtplugindir}/plasma/network/vpn/plasmanetworkmanagement_l2tpui.so + +%files pptp -f plasmanetworkmanagement_pptpui.lang +%{_kf6_qtplugindir}/plasma/network/vpn/plasmanetworkmanagement_pptpui.so + +%files sstp -f plasmanetworkmanagement_sstpui.lang +%{_kf6_qtplugindir}/plasma/network/vpn/plasmanetworkmanagement_sstpui.so + +%files fortisslvpn -f plasmanetworkmanagement_fortisslvpnui.lang +%{_kf6_qtplugindir}/plasma/network/vpn/plasmanetworkmanagement_fortisslvpnui.so + +%if 0%{?fedora} +%files vpnc -f plasmanetworkmanagement_vpncui.lang +%{_kf6_qtplugindir}/plasma/network/vpn/plasmanetworkmanagement_vpncui.so + +%files ssh -f plasmanetworkmanagement_sshui.lang +%{_kf6_qtplugindir}/plasma/network/vpn/plasmanetworkmanagement_sshui.so + +%files iodine -f plasmanetworkmanagement_iodineui.lang +%{_kf6_qtplugindir}/plasma/network/vpn/plasmanetworkmanagement_iodineui.so +%endif + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-night-light/sonic-night-light.spec b/sonic-night-light/sonic-night-light.spec new file mode 100644 index 0000000..76f8317 --- /dev/null +++ b/sonic-night-light/sonic-night-light.spec @@ -0,0 +1,125 @@ +# Generated for SonicDE from Fedora's knighttime.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-night-light fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-night-light +# Upstream KDE project: knighttime +%global oldname knighttime + +#Name: knighttime +Name: sonic-night-light +Summary: Helpers for scheduling the dark-light cycle +Version: 6.7.4 +Release: 1%{?dist} + +License: GPL-3.0-only AND BSD-3-Clause AND MIT AND GPL-2.0-only AND LGPL-2.1-only AND CC0-1.0 AND LGPL-3.0-only +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +# Upstream Patches + +BuildRequires: sonic-frameworks-cmake-modules >= %{version} +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: sonic-rpm-macros +BuildRequires: systemd-rpm-macros +BuildRequires: desktop-file-utils + +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6Gui) +BuildRequires: cmake(Qt6DBus) +BuildRequires: cmake(Qt6Positioning) + +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6Holidays) +BuildRequires: cmake(KF6I18n) + +Provides: knighttime = %{version}-%{release} +Conflicts: knighttime < %{version}-%{release} + +%description +%{summary}. + +%package devel +Summary: Developer files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Provides: knighttime-devel = %{version}-%{release} +Conflicts: knighttime-devel < %{version}-%{release} + +%description devel +%{summary}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: knighttime-doc = %{version}-%{release} +Conflicts: knighttime-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%package html +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: knighttime-html = %{version}-%{release} +Conflicts: knighttime-html < %{version}-%{release} + +%description html +Developer Documentation files for %{name} in HTML format + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build_kf6 + +%install +%cmake_install_kf6 +desktop-file-validate %{buildroot}%{_datadir}/applications/org.kde.knighttimed.desktop + +%post +%systemd_user_post plasma-knighttimed.service + +%preun +%systemd_user_preun plasma-knighttimed.service + +%postun +%systemd_user_postun_with_restart plasma-knighttimed.service +%systemd_user_postun_with_reload plasma-knighttimed.service +%systemd_user_postun plasma-knighttimed.service + +%files +%license LICENSES/*.txt +%{_userunitdir}/plasma-knighttimed.service +%{_kf6_libdir}/libKNightTime.so.0 +%{_kf6_libdir}/libKNightTime.so.%{version} +%{_libexecdir}/knighttimed +%{_datadir}/applications/org.kde.knighttimed.desktop +%{_datadir}/dbus-1/interfaces/org.kde.NightTime.xml +%{_datadir}/dbus-1/services/org.kde.NightTime.service +%{_datadir}/qlogging-categories6/knighttime.categories + +%files devel +%{_includedir}/KNightTime/ +%{_kf6_libdir}/cmake/KNightTime/ +%{_kf6_libdir}/libKNightTime.so + +%files doc +%{_qt6_docdir}/*.qch + +%files html +%{_qt6_docdir}/*/* +%exclude %{_qt6_docdir}/*/*.tags +%exclude %{_qt6_docdir}/*/*.index + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-oxygen-icons/sonic-oxygen-icons.spec b/sonic-oxygen-icons/sonic-oxygen-icons.spec new file mode 100644 index 0000000..a677ed0 --- /dev/null +++ b/sonic-oxygen-icons/sonic-oxygen-icons.spec @@ -0,0 +1,47 @@ +# Written from scratch: Fedora retired its oxygen-icon-theme package. +# Upstream KDE project: oxygen-icons +%define _disable_source_fetch 0 +%global debug_package %{nil} +%global reponame sonic-oxygen-icons + +Name: sonic-oxygen-icons +Version: 6.29.0 +Release: 1%{?dist} +Summary: Oxygen icon theme for SonicDE +License: LGPL-3.0-or-later +URL: https://github.com/Sonic-DE/%{reponame} +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz + +BuildArch: noarch + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(Qt6Core) + +Requires: hicolor-icon-theme + +Provides: oxygen-icon-theme = %{version}-%{release} +Conflicts: oxygen-icon-theme < %{version}-%{release} + +%description +The Oxygen icon theme, as shipped by SonicDE. + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 -DBUILD_TESTING:BOOL=OFF +%cmake_build + +%install +%cmake_install + +%files +%{_datadir}/icons/oxygen/ +%{_metainfodir}/org.kde.oxygenicon.metainfo.xml + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-oxygen-sounds/sonic-oxygen-sounds.spec b/sonic-oxygen-sounds/sonic-oxygen-sounds.spec new file mode 100644 index 0000000..c92c3d2 --- /dev/null +++ b/sonic-oxygen-sounds/sonic-oxygen-sounds.spec @@ -0,0 +1,63 @@ +# Generated for SonicDE from Fedora's oxygen-sounds.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-oxygen-sounds fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-oxygen-sounds +# Upstream KDE project: oxygen-sounds +%global oldname oxygen-sounds + + +# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} + +#Name: oxygen-sounds +Name: sonic-oxygen-sounds +Version: 6.7.4 +Release: 1%{?dist} +Summary: The Oxygen Sound Theme + +License: LGPL-3.0-or-later AND CC0-1.0 AND CC-BY-3.0 AND BSD-2-Clause +#URL: https://invent.kde.org/plasma/oxygen-sounds +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +Provides: oxygen-sound-theme = %{version}-%{release} +Obsoletes: oxygen-sound-theme <= 5.24.50 + +BuildRequires: cmake +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: qt6-qtbase-devel + +BuildArch: noarch + +Provides: oxygen-sounds = %{version}-%{release} +Conflicts: oxygen-sounds < %{version}-%{release} + +%description +%{summary}. + + +%prep +%autosetup -n %{reponame}-%{version} + +%build +%{cmake_kf6} -DBUILD_WITH_QT6=ON +%{cmake_build} + +%install +%{cmake_install} + + +%files +%license LICENSES/*.txt +%{_kf6_datadir}/sounds/Oxygen-* +%{_kf6_datadir}/sounds/oxygen/ + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-oxygen/sonic-oxygen.spec b/sonic-oxygen/sonic-oxygen.spec new file mode 100644 index 0000000..2b31eb5 --- /dev/null +++ b/sonic-oxygen/sonic-oxygen.spec @@ -0,0 +1,205 @@ +# Generated for SonicDE from Fedora's plasma-oxygen.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-oxygen fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-oxygen +# Upstream KDE project: oxygen +%global oldname plasma-oxygen + +%global base_name oxygen + +# Disable kf5 support for RHEL 10+ +%bcond kf5 %[%{undefined rhel} || 0%{?rhel} < 10] + + +# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} + +#Name: plasma-%%{base_name} +Name: sonic-oxygen +Version: 6.7.4 +Release: 1%{?dist} +Summary: Plasma and Qt widget style and window decorations for Plasma + +License: CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND GPL-3.0-or-later AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) AND MIT +#URL: https://invent.kde.org/plasma/%%{base_name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{base_name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{base_name}-%%{version}.tar.xz.sig + + +# Misc +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: gettext +BuildRequires: libxcb-devel +BuildRequires: cmake(Plasma) + +%if %{with kf5} +# Qt5 +BuildRequires: kf5-rpm-macros +BuildRequires: cmake(KF5Completion) +BuildRequires: cmake(KF5Config) +BuildRequires: cmake(KF5FrameworkIntegration) +BuildRequires: cmake(KF5GuiAddons) +BuildRequires: cmake(KF5I18n) +BuildRequires: cmake(KF5Service) +BuildRequires: cmake(KF5WidgetsAddons) +BuildRequires: cmake(KF5WindowSystem) + +BuildRequires: cmake(Qt5DBus) +BuildRequires: cmake(Qt5Quick) +BuildRequires: cmake(Qt5Widgets) +BuildRequires: cmake(Qt5X11Extras) + +Requires: (%{name}-qt5 if qt5-qtbase-gui) +%endif + +# Qt6 +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(KDecoration3) +BuildRequires: cmake(KF6ColorScheme) +BuildRequires: cmake(KF6Completion) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6FrameworkIntegration) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6KCMUtils) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: cmake(KF6KirigamiPlatform) + +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6DBus) +BuildRequires: cmake(Qt6Quick) +BuildRequires: cmake(Qt6Widgets) +BuildRequires: qt6-qtbase-private-devel + +Requires: kf6-filesystem + +Requires: %{name}-qt6 + +Requires: oxygen-cursor-themes >= %{version} +Requires: oxygen-sound-theme +# for oxygen look-and-feel +Requires: sonic-oxygen-icons + +# kwin-oxygen was removed in 5.1.95 +Obsoletes: kwin-oxygen < 5.1.95-1 +Obsoletes: sonic-oxygen < 5.1.1-2 +Conflicts: sonic-desktop-interface < 5.16.90 + +Provides: plasma-oxygen = %{version}-%{release} +Conflicts: plasma-oxygen < %{version}-%{release} + +%description +%{summary}. + +%if %{with kf5} +%package qt5 +Summary: Oxygen widget style for Qt 5 +Obsoletes: qt5-style-oxygen < %{version}-%{release} +Provides: qt5-style-oxygen = %{version}-%{release} +Provides: plasma-oxygen-qt5 = %{version}-%{release} +Conflicts: plasma-oxygen-qt5 < %{version}-%{release} + +%description qt5 +%{summary}. +%endif + +%package qt6 +Summary: Oxygen widget style for Qt 6 +Provides: plasma-oxygen-qt6 = %{version}-%{release} +Conflicts: plasma-oxygen-qt6 < %{version}-%{release} + +%description qt6 +%{summary}. + +%package -n oxygen-cursor-themes +Summary: Oxygen cursor themes +BuildArch: noarch +Obsoletes: plasma-oxygen-common < 5.1.1-2 +%description -n oxygen-cursor-themes +%{summary}. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +mkdir -p qt6build +pushd qt6build +%cmake_kf6 -S .. -DBUILD_QT6=ON -DBUILD_QT5=OFF +%cmake_build +popd + +%if %{with kf5} +mkdir -p qt5build +pushd qt5build +%cmake_kf5 -S .. -DBUILD_QT6=OFF -DBUILD_QT5=ON +%cmake_build +popd +%endif + +%install +pushd qt6build +%cmake_install +popd + +%if %{with kf5} +pushd qt5build +%cmake_install +popd +%endif + +%find_lang oxygen --with-qt --all-name + + +%files -f oxygen.lang +%license LICENSES/* +%{_bindir}/oxygen-settings6 +%{_kf6_datadir}/applications/kcm_oxygendecoration.desktop +%{_kf6_datadir}/color-schemes/Oxygen.colors +%{_kf6_datadir}/color-schemes/OxygenCold.colors +%{_kf6_datadir}/color-schemes/OxygenDark.colors +%{_kf6_datadir}/icons/hicolor/*/apps/oxygen-settings.* +%{_kf6_datadir}/kstyle/themes/oxygen.themerc +%{_kf6_datadir}/plasma/look-and-feel/org.kde.oxygen/ +%{_kf6_datadir}/plasma/look-and-feel/org.kde.oxygenlight/ +%{_kf6_datadir}/plasma/desktoptheme/oxygen/ +%{_kf6_qtplugindir}/kstyle_config/kstyle_oxygen_config.so +%{_kf6_qtplugindir}/org.kde.kdecoration3.kcm/kcm_oxygendecoration.so +%{_kf6_qtplugindir}/org.kde.kdecoration3/org.kde.oxygen.so +%{_kf6_datadir}/wallpapers/Horos/ +%{_kf6_datadir}/plasma/desktoptheme/air/ +%{_kf6_datadir}/plasma/look-and-feel/org.kde.air/ +%{_kf6_datadir}/wallpapers/Air/ + +%if %{with kf5} +%files qt5 +%{_bindir}/oxygen-demo5 +%{_libdir}/liboxygenstyle5.so.* +%{_libdir}/liboxygenstyleconfig5.so.* +%{_kf5_qtplugindir}/styles/oxygen5.so +%endif + +%files qt6 +%{_bindir}/oxygen-demo6 +%{_libdir}/liboxygenstyle6.so.* +%{_libdir}/liboxygenstyleconfig6.so.* +%{_kf6_qtplugindir}/styles/oxygen6.so + +%files -n oxygen-cursor-themes +%{_datadir}/icons/KDE_Classic/ +%{_datadir}/icons/Oxygen_Black/ +%{_datadir}/icons/Oxygen_Blue/ +%{_datadir}/icons/Oxygen_White/ +%{_datadir}/icons/Oxygen_Yellow/ +%{_datadir}/icons/Oxygen_Zion/ + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-partition-manager/sonic-partition-manager.spec b/sonic-partition-manager/sonic-partition-manager.spec new file mode 100644 index 0000000..65f4021 --- /dev/null +++ b/sonic-partition-manager/sonic-partition-manager.spec @@ -0,0 +1,108 @@ +# Generated for SonicDE from Fedora's kde-partitionmanager.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-partition-manager fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-partition-manager +# Upstream KDE project: partitionmanager +%global oldname kde-partitionmanager + +%global base_name partitionmanager + +%global kf6min 5.240.0 +%global qt6min 6.5.0 +%global kpmcoremin 24.01 + + +# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} + +#Name: kde-partitionmanager +Name: sonic-partition-manager +Version: 26.04.3 +Release: 1%{?dist} +Summary: KDE Partition Manager + +License: GPL-3.0-or-later AND LGPL-3.0-or-later AND MIT AND CC-BY-4.0 AND CC0-1.0 AND GFDL-1.2-or-later +#URL: https://apps.kde.org/partitionmanager/ +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/release-service/%%{version}/src/partitionmanager-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz + +BuildRequires: cmake >= 3.16 +BuildRequires: desktop-file-utils +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: gettext +BuildRequires: sonic-rpm-macros +BuildRequires: libappstream-glib + +BuildRequires: cmake(Qt6Core) >= %{qt6min} +BuildRequires: cmake(Qt6Gui) >= %{qt6min} +BuildRequires: cmake(Qt6Widgets) >= %{qt6min} + +BuildRequires: cmake(KF6Config) >= %{kf6min} +BuildRequires: cmake(KF6ConfigWidgets) >= %{kf6min} +BuildRequires: cmake(KF6CoreAddons) >= %{kf6min} +BuildRequires: cmake(KF6Crash) >= %{kf6min} +BuildRequires: cmake(KF6DBusAddons) >= %{kf6min} +BuildRequires: cmake(KF6I18n) >= %{kf6min} +BuildRequires: cmake(KF6JobWidgets) >= %{kf6min} +BuildRequires: cmake(KF6KIO) >= %{kf6min} +BuildRequires: cmake(KF6WidgetsAddons) >= %{kf6min} +BuildRequires: cmake(KF6WindowSystem) >= %{kf6min} +BuildRequires: cmake(KF6XmlGui) >= %{kf6min} +BuildRequires: cmake(KF6DocTools) >= %{kf6min} + +BuildRequires: cmake(PolkitQt6-1) +BuildRequires: cmake(KPMcore) >= %{kpmcoremin} + +Requires: kf6-filesystem + +Provides: kde-partitionmanager = %{version}-%{release} +Conflicts: kde-partitionmanager < %{version}-%{release} + +%description +KDE Partition Manager is a utility program to help you manage the disk devices, +partitions and file systems on your computer. It allows you to easily create, +copy, move, delete, resize without losing data, backup and restore partitions. + +KDE Partition Manager supports a large number of file systems, +including ext2/3/4, reiserfs, NTFS, FAT16/32, jfs, xfs and more. + +Starting from version 1.9.50 KDE Partition Manager has become the GUI part of +KPMcore (KDE PartitionManager core) which contain the libraries used to +manipulate filesystems. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build + + +%install +%cmake_install +%find_lang partitionmanager --with-kde --with-html + +%check +# Validate .desktop file +desktop-file-validate %{buildroot}%{_kf6_datadir}/applications/*partitionmanager.desktop +# Validate appdata file +appstream-util validate-relax --nonet %{buildroot}%{_kf6_metainfodir}/*.appdata.xml + + +%files -f partitionmanager.lang +%license LICENSES/* +%{_kf6_bindir}/partitionmanager +%{_kf6_datadir}/applications/*partitionmanager.desktop +%{_kf6_datadir}/solid/actions/open_in_partitionmanager.desktop +%{_kf6_datadir}/config.kcfg/partitionmanager.kcfg +%{_datadir}/icons/hicolor/*/*/* +%{_kf6_metainfodir}/*partitionmanager.appdata.xml + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 26.04.3-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-pipewire/sonic-pipewire.spec b/sonic-pipewire/sonic-pipewire.spec new file mode 100644 index 0000000..c314e96 --- /dev/null +++ b/sonic-pipewire/sonic-pipewire.spec @@ -0,0 +1,126 @@ +# Generated for SonicDE from Fedora's kpipewire.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-pipewire fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-pipewire +# Upstream KDE project: kpipewire +%global oldname kpipewire + +#Name: kpipewire +Name: sonic-pipewire +Summary: Set of convenient classes to use PipeWire in Qt projects +Version: 6.7.4 +Release: 1%{?dist} + +License: BSD-3-Clause AND CC0-1.0 AND LGPL-2.1-only AND LGPL-3.0-only +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig +Patch0: %{name}-ffmpeg8.patch + +# Compile Tools +BuildRequires: cmake +BuildRequires: gcc-c++ + +# Fedora +BuildRequires: sonic-rpm-macros +Requires: kf6-filesystem + +# KDE Frameworks +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6I18n) + +# Misc +BuildRequires: libdrm-devel +BuildRequires: libepoxy-devel +BuildRequires: mesa-libgbm-devel +BuildRequires: pipewire-devel +BuildRequires: wayland-devel +BuildRequires: pkgconfig(libavcodec) +BuildRequires: pkgconfig(libavfilter) +BuildRequires: pkgconfig(libavformat) +BuildRequires: pkgconfig(libavutil) +BuildRequires: pkgconfig(libswscale) +BuildRequires: pkgconfig(libva) + +# Plasma +BuildRequires: plasma-wayland-protocols-devel + +# Qt +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtbase-private-devel +BuildRequires: qt6-qtdeclarative-devel +BuildRequires: qt6-qtwayland-devel + +Provides: kpipewire = %{version}-%{release} +Conflicts: kpipewire < %{version}-%{release} + +%description +It is developed in C++ and it's main use target is QML components. +As it's what's been useful, this framework focuses on graphical PipeWire +features. If it was necessary, these could be included. + +At the moment we offer two main components: + +- KPipeWire: offers the main components to connect to and render +PipeWire into your app. +- KPipeWireRecord: using FFmpeg, helps to record a PipeWire video stream +into a file. + +%package devel +Summary: Development files for %{name} +# This requires pipewire headers to be installed +Requires: pipewire-devel +Requires: %{name}%{?_isa} = %{version}-%{release} +Provides: kpipewire-devel = %{version}-%{release} +Provides: kpipewire-devel%{?_isa} = %{version}-%{release} +Obsoletes: kpipewire-devel <= 1:5.2.0 + +Provides: kpipewire-devel = %{version}-%{release} +Conflicts: kpipewire-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build + + +%install +%cmake_install + +%find_lang %{oldname} --with-qt --all-name + +%files -f %{name}.lang +%license LICENSES/* +%{_libdir}/libKPipeWire.so.6 +%{_libdir}/libKPipeWire.so.%{version} +%{_libdir}/libKPipeWireRecord.so.6 +%{_libdir}/libKPipeWireRecord.so.%{version} +%{_libdir}/libKPipeWireDmaBuf.so.6 +%{_libdir}/libKPipeWireDmaBuf.so.%{version} +%{_qt6_qmldir}/org/kde/pipewire/* +%{_kf6_datadir}/qlogging-categories6/*.categories + +%files devel +%{_libdir}/libKPipeWire.so +%{_libdir}/libKPipeWireRecord.so +%{_libdir}/libKPipeWireDmaBuf.so +%dir %{_includedir}/KPipeWire +%{_includedir}/KPipeWire/* +%dir %{_libdir}/cmake/KPipeWire +%{_libdir}/cmake/KPipeWire/*.cmake + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-plasma5-support-library/sonic-plasma5-support-library.spec b/sonic-plasma5-support-library/sonic-plasma5-support-library.spec new file mode 100644 index 0000000..947e9ef --- /dev/null +++ b/sonic-plasma5-support-library/sonic-plasma5-support-library.spec @@ -0,0 +1,135 @@ +# Generated for SonicDE from Fedora's plasma5support.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-plasma5-support-library fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-plasma5-support-library +# Upstream KDE project: plasma5support +%global oldname plasma5support + +#Name: plasma5support +Name: sonic-plasma5-support-library +Summary: Support components for porting from KF5/Qt5 to KF6/Qt6 +Version: 6.7.4 +Release: 1%{?dist} + +License: CC0-1.0 AND GPL-2.0-or-later AND LGPL-2.0-or-later +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: sonic-rpm-macros +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtbase-private-devel +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6Quick) +BuildRequires: cmake(Qt6Sql) +BuildRequires: cmake(Qt6Qml) +BuildRequires: cmake(Qt6Widgets) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6Service) +BuildRequires: cmake(KF6Solid) +BuildRequires: cmake(KF6IdleTime) +BuildRequires: cmake(KF6NetworkManagerQt) +BuildRequires: cmake(KF6UnitConversion) +BuildRequires: cmake(KF6Holidays) +BuildRequires: cmake(PlasmaActivities) +BuildRequires: cmake(KSysGuard) +BuildRequires: cmake(Plasma) +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: pkgconfig(xfixes) +BuildRequires: pkgconfig(libgps) +Requires: kf6-filesystem + +# Renamed from kf6-plasma5support +Obsoletes: kf6-plasma5support < 1:%{version}-%{release} +Provides: kf6-plasma5support = 1:%{version}-%{release} +# Geolocation libs got split off from plasma-workspace +Obsoletes: plasma-workspace-geolocation < 6.2.90-1 +Provides: plasma-workspace-geolocation = %{version}-%{release} +Obsoletes: plasma-workspace-geolocation-libs < 6.2.90-1 +Provides: plasma-workspace-geolocation-libs = %{version}-%{release} + +Provides: plasma5support = %{version}-%{release} +Conflicts: plasma5support < %{version}-%{release} + +%description +%{summary}. + +%package devel +Summary: Developer files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: qt6-qtbase-devel +Obsoletes: kf6-plasma5support-devel < 1:%{version}-%{release} +Provides: kf6-plasma5support-devel = 1:%{version}-%{release} +# Geolocation devel components were part of plasma-workspace-devel +Conflicts: plasma-workspace-devel < 6.2.90-1 +Provides: plasma5support-devel = %{version}-%{release} +Conflicts: plasma5support-devel < %{version}-%{release} + +%description devel +%{summary}. + +%package doc +Summary: Developer Documentation files for %{name} +BuildArch: noarch +Provides: plasma5support-doc = %{version}-%{release} +Conflicts: plasma5support-doc < %{version}-%{release} + +%description doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build + +%install +%cmake_install +%find_lang libplasma5support --with-qt --with-kde --all-name + +%files -f libplasma5support.lang +%doc README.md +%license LICENSES/*.txt +%{_qt6_qmldir}/org/kde/plasma/plasma5support/ +%{_datadir}/plasma5support/ +%{_datadir}/qlogging-categories6/plasma5support.categories +%{_datadir}/qlogging-categories6/plasma5support.renamecategories +%{_kf6_libdir}/libPlasma5Support.so.6 +%{_kf6_libdir}/libPlasma5Support.so.%{version} +%{_kf6_qtplugindir}/plasma5support/ +%{_libdir}/libplasma-geolocation-interface.so.6 +%{_libdir}/libplasma-geolocation-interface.so.%{version} +%{_libdir}/libweather_ion.so.7 +%{_libdir}/libweather_ion.so.7.0.0 +%{_kf6_datadir}/plasma/weather_legacy/noaa_station_list.xml + +%files devel +%{_includedir}/Plasma5Support/ +%{_kf6_libdir}/cmake/Plasma5Support/ +%{_qt6_docdir}/*.tags +%{_kf6_libdir}/libPlasma5Support.so +%{_libdir}/libweather_ion.so +%{_libdir}/libplasma-geolocation-interface.so +%{_includedir}/plasma/geolocation/ +%{_includedir}/plasma5support/ + +%files doc +%{_qt6_docdir}/*.qch + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-polkit-agent/sonic-polkit-agent.spec b/sonic-polkit-agent/sonic-polkit-agent.spec new file mode 100644 index 0000000..6b331f1 --- /dev/null +++ b/sonic-polkit-agent/sonic-polkit-agent.spec @@ -0,0 +1,90 @@ +# Generated for SonicDE from Fedora's polkit-kde.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-polkit-agent fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-polkit-agent +# Upstream KDE project: polkit-kde-agent-1 +%global oldname polkit-kde + +%global base_name polkit-kde-agent-1 + +#Name: polkit-kde +Name: sonic-polkit-agent +Summary: PolicyKit integration for KDE Desktop +Version: 6.7.4 +Release: 1%{?dist} + +License: GPL-2.0-or-later AND CC0-1.0 +#URL: https://invent.kde.org/plasma/%%{base_name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{base_name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{base_name}-%%{version}.tar.xz.sig + + +## upstreamable patches + + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: systemd-rpm-macros +BuildRequires: qt6-qtbase-devel + +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6Crash) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6Declarative) + +BuildRequires: polkit-qt6-1-devel + +Provides: PolicyKit-authentication-agent = %{version}-%{release} +Provides: polkit-kde-1 = %{version}-%{release} +Provides: polkit-kde-agent-1 = %{version}-%{release} + +Obsoletes: PolicyKit-kde < 4.5 + +# Add explicit dependency on polkit, since polkit-libs were split out +Requires: polkit + +Provides: polkit-kde = %{version}-%{release} +Conflicts: polkit-kde < %{version}-%{release} + +%description +Provides Policy Kit Authentication Agent that nicely fits to KDE. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 \ + -DKDE_INSTALL_LIBEXECDIR:PATH=%{_kf6_libexecdir} + +%cmake_build + +%install +%cmake_install + +%find_lang polkit-kde-authentication-agent-1 + + +%files -f polkit-kde-authentication-agent-1.lang +%license LICENSES/* +%{_kf6_libexecdir}/polkit-kde-authentication-agent-1 +%{_sysconfdir}/xdg/autostart/polkit-kde-authentication-agent-1.desktop +%{_kf6_datadir}/knotifications6/polkit-kde-authentication-agent-1.notifyrc +%{_kf6_datadir}/applications/org.kde.polkit-kde-authentication-agent-1.desktop +%{_userunitdir}/plasma-polkit-agent.service + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-polkit/sonic-polkit.spec b/sonic-polkit/sonic-polkit.spec new file mode 100644 index 0000000..facb0ca --- /dev/null +++ b/sonic-polkit/sonic-polkit.spec @@ -0,0 +1,127 @@ +# Generated for SonicDE from Fedora's polkit-qt-1.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-polkit fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-polkit +# Upstream KDE project: polkit-qt-1 +%global oldname polkit-qt-1 + +#Name: polkit-qt-1 +Name: sonic-polkit +Version: 0.201.2 +Release: 1%{?dist} +Summary: Qt bindings for PolicyKit + +License: BSD-3-Clause AND GPL-2.0-or-later AND LGPL-2.0-or-later +#URL: https://api.kde.org/kdesupport-api/polkit-qt-1-apidocs/ +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/stable/%%{name}/polkit-qt-1-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz + + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: pkgconfig(polkit-agent-1) +BuildRequires: pkgconfig(polkit-gobject-1) + +Provides: polkit-qt-1 = %{version}-%{release} +Conflicts: polkit-qt-1 < %{version}-%{release} + +%description +Polkit-qt is a library that lets developers use the PolicyKit API +through a nice Qt-styled API. + +%package -n polkit-qt5-1 +Summary: PolicyKit Qt5 bindings +BuildRequires: pkgconfig(Qt5DBus) +BuildRequires: pkgconfig(Qt5Gui) +BuildRequires: pkgconfig(Qt5Widgets) +Obsoletes: polkit-qt5 < 0.112.0-3 +Provides: polkit-qt5 = %{version}-%{release} +%description -n polkit-qt5-1 +Polkit-qt is a library that lets developers use the PolicyKit API +through a nice Qt-styled API. + +%package -n polkit-qt5-1-devel +Summary: Development files for PolicyKit Qt5 bindings +Obsoletes: polkit-qt5-devel < 0.112.0-3 +Provides: polkit-qt5-devel = %{version}-%{release} +Requires: polkit-qt5-1%{?_isa} = %{version}-%{release} +%description -n polkit-qt5-1-devel +%{summary}. + +%package -n polkit-qt6-1 +Summary: PolicyKit Qt6 bindings +BuildRequires: pkgconfig(Qt6DBus) +BuildRequires: pkgconfig(Qt6Gui) +BuildRequires: pkgconfig(Qt6Widgets) +%description -n polkit-qt6-1 +Polkit-qt is a library that lets developers use the PolicyKit API +through a nice Qt-styled API. + +%package -n polkit-qt6-1-devel +Summary: Development files for PolicyKit Qt5 bindings +Requires: polkit-qt6-1%{?_isa} = %{version}-%{release} +%description -n polkit-qt6-1-devel +%{summary}. + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%global _vpath_builddir %{_target_platform}-qt5 +%cmake -DBUILD_EXAMPLES:BOOL=OFF -DQT_MAJOR_VERSION=5 +%cmake_build + +%global _vpath_builddir %{_target_platform}-qt6 +%cmake -DBUILD_EXAMPLES:BOOL=OFF -DQT_MAJOR_VERSION=6 +%cmake_build + +%install +%global _vpath_builddir %{_target_platform}-qt5 +%cmake_install + +%global _vpath_builddir %{_target_platform}-qt6 +%cmake_install + +%files -n polkit-qt5-1 +%doc AUTHORS README +%license LICENSES/* +%{_libdir}/libpolkit-qt5-core-1.so.1* +%{_libdir}/libpolkit-qt5-gui-1.so.1* +%{_libdir}/libpolkit-qt5-agent-1.so.1* + +%files -n polkit-qt5-1-devel +%{_includedir}/polkit-qt5-1/ +%{_libdir}/libpolkit-qt5-core-1.so +%{_libdir}/libpolkit-qt5-gui-1.so +%{_libdir}/libpolkit-qt5-agent-1.so +%{_libdir}/pkgconfig/polkit-qt5-1.pc +%{_libdir}/pkgconfig/polkit-qt5-core-1.pc +%{_libdir}/pkgconfig/polkit-qt5-gui-1.pc +%{_libdir}/pkgconfig/polkit-qt5-agent-1.pc +%{_libdir}/cmake/PolkitQt5-1/ + +%files -n polkit-qt6-1 +%doc AUTHORS README +%license LICENSES/* +%{_libdir}/libpolkit-qt6-core-1.so.1* +%{_libdir}/libpolkit-qt6-gui-1.so.1* +%{_libdir}/libpolkit-qt6-agent-1.so.1* + +%files -n polkit-qt6-1-devel +%{_includedir}/polkit-qt6-1/ +%{_libdir}/libpolkit-qt6-core-1.so +%{_libdir}/libpolkit-qt6-gui-1.so +%{_libdir}/libpolkit-qt6-agent-1.so +%{_libdir}/pkgconfig/polkit-qt6-1.pc +%{_libdir}/pkgconfig/polkit-qt6-core-1.pc +%{_libdir}/pkgconfig/polkit-qt6-gui-1.pc +%{_libdir}/pkgconfig/polkit-qt6-agent-1.pc +%{_libdir}/cmake/PolkitQt6-1/ + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 0.201.2-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-pulseaudio-library/sonic-pulseaudio-library.spec b/sonic-pulseaudio-library/sonic-pulseaudio-library.spec new file mode 100644 index 0000000..c9b80a9 --- /dev/null +++ b/sonic-pulseaudio-library/sonic-pulseaudio-library.spec @@ -0,0 +1,93 @@ +# Generated for SonicDE from Fedora's pulseaudio-qt.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-pulseaudio-library fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-pulseaudio-library +# Upstream KDE project: pulseaudio-qt +%global oldname pulseaudio-qt + +#Name: pulseaudio-qt +Name: sonic-pulseaudio-library +Summary: Qt bindings for PulseAudio +Version: 1.8.1 +Release: 1%{?dist} + +License: CC0-1.0 AND LGPL-2.1-only AND LGPL-3.0-only +#URL: https://invent.kde.org/libraries/pulseaudio-qt +URL: https://github.com/Sonic-DE/%{reponame} +#Source: https://download.kde.org/stable/%%{name}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: kf5-rpm-macros +BuildRequires: pkgconfig(libpulse) +BuildRequires: pkgconfig(glib-2.0) +BuildRequires: cmake(Qt6Gui) +BuildRequires: cmake(Qt6Qml) +BuildRequires: cmake(Qt6Test) +BuildRequires: cmake(Qt6DBus) + +Provides: pulseaudio-qt = %{version}-%{release} +Conflicts: pulseaudio-qt < %{version}-%{release} + +%description +Pulseaudio-Qt is a library providing Qt bindings to PulseAudio. + +%package qt6 +Summary: Qt6 bindings for PulseAudio +Provides: pulseaudio-qt-qt6 = %{version}-%{release} +Conflicts: pulseaudio-qt-qt6 < %{version}-%{release} + +%description qt6 +%{summary}. + +%package qt6-devel +Summary: Development files for %{name} (Qt6) +Requires: %{name}-qt6%{?_isa} = %{version}-%{release} +Provides: pulseaudio-qt-qt6-devel = %{version}-%{release} +Conflicts: pulseaudio-qt-qt6-devel < %{version}-%{release} + +%description qt6-devel +%{summary}. + +%package qt6-doc +Summary: Developer Documentation files for %{name} +Provides: pulseaudio-qt-qt6-doc = %{version}-%{release} +Conflicts: pulseaudio-qt-qt6-doc < %{version}-%{release} + +%description qt6-doc +Developer Documentation files for %{name} for use with KDevelop or QtCreator. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build + +%install +%cmake_install +rm %{buildroot}%{_kf6_includedir}/pulseaudioqt_version.h + +%files qt6 +%license LICENSES/*.txt +%doc README.md +%{_kf6_libdir}/libKF6PulseAudioQt.so.5 +%{_kf6_libdir}/libKF6PulseAudioQt.so.%{version} + +%files qt6-devel +%{_kf6_includedir}/KF6PulseAudioQt/ +%{_kf6_libdir}/libKF6PulseAudioQt.so +%{_kf6_libdir}/cmake/KF6PulseAudioQt/ +%{_kf6_libdir}/pkgconfig/KF6PulseAudioQt.pc +%{_qt6_docdir}/*.tags + +%files qt6-doc +%{_qt6_docdir}/*.qch + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 1.8.1-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-qt-accounts-library/sonic-qt-accounts-library.spec b/sonic-qt-accounts-library/sonic-qt-accounts-library.spec new file mode 100644 index 0000000..7d7bfb0 --- /dev/null +++ b/sonic-qt-accounts-library/sonic-qt-accounts-library.spec @@ -0,0 +1,59 @@ +# Written from scratch: upstream libaccounts-qt has no Fedora Qt 6 package. +%define _disable_source_fetch 0 +%global debug_package %{nil} +%global reponame sonic-qt-accounts-library + +Name: sonic-qt-accounts-library +Version: 1.17.2 +Release: 1%{?dist} +Summary: Qt 6 bindings for libaccounts-glib, as used by SonicDE +License: LGPL-2.1-only +URL: https://github.com/Sonic-DE/%{reponame} +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6Xml) +BuildRequires: pkgconfig(libaccounts-glib) +BuildRequires: pkgconfig(glib-2.0) + +Provides: accounts-qt6%{?_isa} = %{version}-%{release} + +%description +Qt 6 bindings for libaccounts-glib, the accounts and single sign-on database +used by the SonicDE online accounts integration. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: cmake(Qt6Core) +Provides: accounts-qt6-devel%{?_isa} = %{version}-%{release} + +%description devel +%{summary}. + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING:BOOL=OFF +%cmake_build + +%install +%cmake_install + +%files +%license COPYING +%doc README.md NOTES +%{_libdir}/libaccounts-qt6.so.1* + +%files devel +%{_includedir}/accounts-qt6/ +%{_libdir}/libaccounts-qt6.so +%{_libdir}/cmake/AccountsQt6/ +%{_libdir}/pkgconfig/accounts-qt6.pc + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 1.17.2-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-qt-theme-bridge/sonic-qt-theme-bridge.spec b/sonic-qt-theme-bridge/sonic-qt-theme-bridge.spec new file mode 100644 index 0000000..b11d981 --- /dev/null +++ b/sonic-qt-theme-bridge/sonic-qt-theme-bridge.spec @@ -0,0 +1,150 @@ +# Generated for SonicDE from Fedora's plasma-integration.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-qt-theme-bridge fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-qt-theme-bridge +# Upstream KDE project: plasma-integration +%global oldname plasma-integration + +# EPEL10 does not have kf5 +%if 0%{?rhel} && 0%{?rhel} >= 10 +%bcond_with kf5 +%else +%bcond_without kf5 +%endif + +#Name: plasma-integration +Name: sonic-qt-theme-bridge +Summary: Qt Platform Theme integration plugin for Plasma +Version: 6.7.4 +Release: 1%{?dist} + +License: BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-3.0-only AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-or-later AND LGPL-3.0-only AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +BuildRequires: sonic-rpm-macros +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: wayland-devel +BuildRequires: cmake(PlasmaWaylandProtocols) >= 1.6.0 + +BuildRequires: pkgconfig(x11) +BuildRequires: pkgconfig(xcursor) + +BuildRequires: cmake(Qt6WaylandClient) +BuildRequires: cmake(Qt6Widgets) +BuildRequires: cmake(Qt6DBus) +BuildRequires: pkgconfig(Qt6QuickControls2) +BuildRequires: qt6-qtbase-private-devel + +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6ConfigWidgets) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: cmake(KF6StatusNotifierItem) + +%if %{with kf5} +# Qt5 build +BuildRequires: cmake(Qt5WaylandClient) +BuildRequires: cmake(Qt5Widgets) +BuildRequires: cmake(Qt5DBus) +BuildRequires: cmake(Qt5X11Extras) +BuildRequires: pkgconfig(Qt5QuickControls2) +BuildRequires: qt5-qtbase-private-devel +# Qt5ThemeSupport +BuildRequires: qt5-qtbase-static + +BuildRequires: cmake(KF5Config) +BuildRequires: cmake(KF5ConfigWidgets) +BuildRequires: cmake(KF5I18n) +BuildRequires: cmake(KF5IconThemes) +BuildRequires: cmake(KF5KIO) +BuildRequires: cmake(KF5Notifications) +BuildRequires: cmake(KF5WidgetsAddons) +BuildRequires: cmake(KF5WindowSystem) +BuildRequires: cmake(KF5Wayland) +BuildRequires: cmake(KF5GuiAddons) + +Requires: (%{name}-qt5 if qt5-qtbase-gui) +%endif + +Requires: sonic-breeze%{?_isa} +Requires: breeze-cursor-theme +Requires: breeze-icon-theme +Recommends: sonic-workspace + +# The default QtQuick styles +Requires: sonic-frameworks-quick-silver-style%{?_isa} +Requires: sonic-frameworks-quick-desktop-style%{?_isa} + +# The default fonts +Requires: font(notosans) +Requires: font(hack) + +Provides: plasma-integration = %{version}-%{release} +Conflicts: plasma-integration < %{version}-%{release} + +%description +%{summary}. + +%if %{with kf5} +%package qt5 +Summary: Qt5 support for %{name} +# The default QtQuick style +Requires: qqc2-desktop-style%{?_isa} +Provides: plasma-integration-qt5 = %{version}-%{release} +Conflicts: plasma-integration-qt5 < %{version}-%{release} + +%description qt5 +%{summary}. +%endif + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%global _vpath_builddir %{_target_platform}-qt6 +%cmake_kf6 -DBUILD_QT5=OFF -DBUILD_QT6=ON +%cmake_build + +%if %{with kf5} +%global _vpath_builddir %{_target_platform}-qt5 +%cmake_kf5 -DBUILD_QT5=ON -DBUILD_QT6=OFF +%cmake_build +%endif + + +%install +%global _vpath_builddir %{_target_platform}-qt6 +%cmake_install + +%if %{with kf5} +%global _vpath_builddir %{_target_platform}-qt5 +%cmake_install +%endif + +%find_lang plasmaintegration5 + +%files -f plasmaintegration5.lang +%doc README.md +%license LICENSES +%{_qt6_plugindir}/platformthemes/KDEPlasmaPlatformTheme6.so + +%if %{with kf5} +%files qt5 +%{_qt5_plugindir}/platformthemes/KDEPlasmaPlatformTheme5.so +%endif + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-quick-image-editor/sonic-quick-image-editor.spec b/sonic-quick-image-editor/sonic-quick-image-editor.spec new file mode 100644 index 0000000..9006382 --- /dev/null +++ b/sonic-quick-image-editor/sonic-quick-image-editor.spec @@ -0,0 +1,82 @@ +# Generated for SonicDE from Fedora's kquickimageeditor.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-quick-image-editor fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-quick-image-editor +# Upstream KDE project: kquickimageeditor +%global oldname kquickimageeditor + +#Name: kquickimageeditor +Name: sonic-quick-image-editor +Version: 0.6.2.1.1 +Release: 1%{?dist} +Summary: QtQuick components providing basic image editing capabilities +License: BSD-2-Clause AND CC0-1.0 AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only +#URL: https://invent.kde.org/libraries/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/stable/%%{name}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz + +BuildRequires: sonic-frameworks-cmake-modules + +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6Quick) + +BuildRequires: cmake(KF6Config) + +BuildRequires: cmake(OpenCV) + +Provides: kquickimageeditor = %{version}-%{release} +Conflicts: kquickimageeditor < %{version}-%{release} + +%description +%{summary} + +%package qt6 +Summary: Qt6 QtQuick components providing basic image editing capabilities + +Provides: kquickimageeditor-qt6 = %{version}-%{release} +Conflicts: kquickimageeditor-qt6 < %{version}-%{release} + +%description qt6 +%{summary} + +%package qt6-devel +Summary: Development files for %{name}-qt6 +Requires: %{name}-qt6%{?_isa} = %{version}-%{release} + +Provides: kquickimageeditor-qt6-devel = %{version}-%{release} +Conflicts: kquickimageeditor-qt6-devel < %{version}-%{release} + +%description qt6-devel +The %{name}-qt6-devel package contains cmake and mkspecs for developing +applications that use %{name}-qt6. + +%prep +%autosetup -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build + + +%install +%cmake_install + +%files qt6 +%{_kf6_qmldir}/org/kde/kquickimageeditor +%{_kf6_libdir}/libKQuickImageEditor.so.%{version} +%{_kf6_libdir}/libKQuickImageEditor.so.1 + +%files qt6-devel +%{_kf6_libdir}/libKQuickImageEditor.so +%{_kf6_libdir}/cmake/KQuickImageEditor +%{_includedir}/KQuickImageEditor/ +%{_includedir}/kquickimageeditor/ +%{_kf6_archdatadir}/mkspecs/modules/qt_KQuickImageEditor.pri + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 0.6.2.1.1-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-rdp-server/sonic-rdp-server.spec b/sonic-rdp-server/sonic-rdp-server.spec new file mode 100644 index 0000000..826b7a0 --- /dev/null +++ b/sonic-rdp-server/sonic-rdp-server.spec @@ -0,0 +1,149 @@ +# Generated for SonicDE from Fedora's krdp.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-rdp-server fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-rdp-server +# Upstream KDE project: krdp +%global oldname krdp + +%global qt6minver 6.6.0 +%global kf6minver 6.2 + + +# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} + +#Name: krdp +Name: sonic-rdp-server +Summary: Desktop sharing using RDP +Version: 6.7.4 +Release: 1%{?dist} + +License: LGPL-2.1-only OR LGPL-3.0-only +#URL: https://invent.kde.org/plasma/krdp +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + + +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: make +BuildRequires: sonic-frameworks-cmake-modules >= %{kf6minver} +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(KF6Crash) >= %{kf6minver} +BuildRequires: cmake(KF6Config) >= %{kf6minver} +BuildRequires: cmake(KF6DBusAddons) >= %{kf6minver} +BuildRequires: cmake(KF6KCMUtils) >= %{kf6minver} +BuildRequires: cmake(KF6I18n) >= %{kf6minver} +BuildRequires: cmake(KF6CoreAddons) >= %{kf6minver} +BuildRequires: cmake(KF6StatusNotifierItem) >= %{kf6minver} +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: qt6-qtbase-private-devel >= %{qt6minver} +BuildRequires: cmake(Qt6Core) >= %{qt6minver} +BuildRequires: cmake(Qt6Gui) >= %{qt6minver} +BuildRequires: cmake(Qt6Network) >= %{qt6minver} +BuildRequires: cmake(Qt6DBus) >= %{qt6minver} +BuildRequires: cmake(Qt6WaylandClient) >= %{qt6minver} +BuildRequires: cmake(Qt6Keychain) +BuildRequires: cmake(FreeRDP) >= 3.1 +BuildRequires: cmake(WinPR) >= 3.1 +BuildRequires: cmake(FreeRDP-Server) >= 3.1 +BuildRequires: cmake(KPipeWire) >= 5.27.80 +BuildRequires: cmake(PlasmaWaylandProtocols) +BuildRequires: pkgconfig(pam) +BuildRequires: pkgconfig(wayland-client) +BuildRequires: pkgconfig(wayland-cursor) +BuildRequires: pkgconfig(wayland-egl) +BuildRequires: pkgconfig(wayland-server) +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: /usr/bin/winpr-makecert +BuildRequires: qt6qml(org.kde.kirigamiaddons.formcard) +BuildRequires: pkgconfig(epoxy) +Requires: qt6qml(org.kde.kirigamiaddons.formcard) +Requires: /usr/bin/openssl + +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Obsoletes: %{name}-server < 6.0.90 +Provides: %{name}-server = %{version}-%{release} +Provides: %{name}-server%{?_isa} = %{version}-%{release} + +Provides: krdp = %{version}-%{release} +Conflicts: krdp < %{version}-%{release} + +%description +%{summary}. + + +%package libs +Summary: Library for creating an RDP server +Requires: /usr/bin/winpr-makecert +Conflicts: %{name} < 6.0.90 +Conflicts: %{name}-server < 6.0.90 + +Provides: krdp-libs = %{version}-%{release} +Conflicts: krdp-libs < %{version}-%{release} + +%description libs +%{summary}. + + +%package devel +Summary: Development files for %{name} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +Provides: krdp-devel = %{version}-%{release} +Conflicts: krdp-devel < %{version}-%{release} + +%description devel +%{summary}. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build + + +%install +%cmake_install +%find_lang %{oldname} --with-html --all-name + +%post +%systemd_user_post app-org.kde.krdpserver.service + +%preun +%systemd_user_preun app-org.kde.krdpserver.service + +%postun +%systemd_user_postun_with_restart app-org.kde.krdpserver.service +%systemd_user_postun_with_reload app-org.kde.krdpserver.service +%systemd_user_postun app-org.kde.krdpserver.service + +%files -f %{name}.lang +%doc README.md +%{_kf6_bindir}/krdpserver +%{_kf6_datadir}/applications/kcm_krdpserver.desktop +%{_kf6_datadir}/applications/org.kde.krdpserver.desktop +%{_kf6_datadir}/qlogging-categories6/kcm_krdpserver.categories +%{_kf6_datadir}/qlogging-categories6/krdp.categories +%{_qt6_plugindir}/plasma/kcms/systemsettings/kcm_krdpserver.so +%{_userunitdir}/app-org.kde.krdpserver.service +%{_userpresetdir}/00-krdp.preset + +%files libs +%license LICENSES/LGPL-*.txt LICENSES/LicenseRef-KDE-* +%{_kf6_libdir}/libKRdp.so.6{,.*} + +%files devel +%{_kf6_libdir}/libKRdp.so +%{_kf6_libdir}/cmake/KRdp/ + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-rpm-macros/LICENSE b/sonic-rpm-macros/LICENSE new file mode 100644 index 0000000..7fff8cd --- /dev/null +++ b/sonic-rpm-macros/LICENSE @@ -0,0 +1,9 @@ +Copyright (c) 2023 Fedora Project Contributors. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/sonic-rpm-macros/macros.kf6 b/sonic-rpm-macros/macros.kf6 new file mode 100644 index 0000000..02388ec --- /dev/null +++ b/sonic-rpm-macros/macros.kf6 @@ -0,0 +1,120 @@ +%_kf6_prefix %_prefix +%_kf6_archdatadir %_qt6_archdatadir +%_kf6_bindir %_kf6_prefix/bin +%_kf6_datadir %_datadir +%_kf6_docdir %_docdir +%_kf6_includedir %_includedir/KF6 +%_kf6_libdir %_libdir +%_kf6_libexecdir %_libexecdir/kf6 +%_kf6_metainfodir %_metainfodir +%_kf6_qtplugindir %_qt6_plugindir +%_kf6_plugindir %_qt6_plugindir/kf6 +%_kf6_sysconfdir %_sysconfdir +%_kf6_mandir %_kf6_datadir/man +%_kf6_buildtype release +%_kf6_qmldir %_kf6_archdatadir/qml +%_kf6_version @@kf6_VERSION@@ + +%cmake_kf6 \\\ + %undefine __cmake_in_source_build \ + QTDIR="%{_qt6_prefix}" ; export QTDIR ; \ + PATH="%{_qt6_bindir}:$PATH" ; export PATH ; \ + KDE_DOCS="/usr/share/doc/qt6/kde-qdoc-common" ; export KDE_DOCS ; \ + CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ; \ + CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ; \ + FFLAGS="${FFLAGS:-%optflags%{?_fmoddir: -I%_fmoddir}}" ; export FFLAGS ; \ + %{?__global_ldflags:LDFLAGS="${LDFLAGS:-%__global_ldflags}" ; export LDFLAGS ;} \ + %{__cmake} \\\ + %{?__cmake_builddir:-S "%{_vpath_srcdir}"} \\\ + %{?__cmake_builddir:-B "%{__cmake_builddir}"} \\\ + -DCMAKE_C_FLAGS_RELEASE:STRING="-DNDEBUG" \\\ + -DCMAKE_CXX_FLAGS_RELEASE:STRING="-DNDEBUG" \\\ + -DCMAKE_Fortran_FLAGS_RELEASE:STRING="-DNDEBUG" \\\ + -DBUILD_SHARED_LIBS:BOOL=ON \\\ + -DBUILD_TESTING:BOOL=FALSE \\\ + -DBUILD_QCH:BOOL=ON \\\ + -DCMAKE_BUILD_TYPE=%{_kf6_buildtype} \\\ + -DCMAKE_INSTALL_INCLUDEDIR_kf6:PATH=%{_kf6_includedir} \\\ + -DCMAKE_INSTALL_LIBEXECDIR_kf6:PATH=%{_kf6_libexecdir} \\\ + -DCMAKE_INSTALL_PREFIX:PATH=%{_kf6_prefix} \\\ + -DCMAKE_USE_RELATIVE_PATHS:BOOL=ON \\\ + -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \\\ + -DECM_MKSPECS_INSTALL_DIR:PATH=%{_kf6_archdatadir}/mkspecs/modules \\\ + -DKDE_INSTALL_BINDIR:PATH=%{_kf6_bindir} \\\ + -DKDE_INSTALL_INCLUDEDIR:PATH=%{_includedir} \\\ + -DKDE_INSTALL_KCFGDIR:PATH=%{_datadir}/config.kcfg \\\ + -DKDE_INSTALL_LIBDIR:PATH=%{_kf6_libdir} \\\ + -DKDE_INSTALL_LIBEXECDIR:PATH=%{_libexecdir} \\\ + -DKDE_INSTALL_METAINFODIR:PATH=%{_kf6_metainfodir} \\\ + -DKDE_INSTALL_PLUGINDIR:PATH=%{_qt6_plugindir} \\\ + -DKDE_INSTALL_QMLDIR:PATH=%{_kf6_qmldir} \\\ + -DKDE_INSTALL_QTMETATYPESDIR:PATH=%{_qt6_metatypesdir} \\\ + -DKDE_INSTALL_QTPLUGINDIR:PATH=%{_qt6_plugindir} \\\ + -DKDE_INSTALL_QTQCHDIR:PATH=%{_qt6_docdir} \\\ + -DKDE_INSTALL_QTQUICKIMPORTSDIR:PATH=%{_qt6_importdir} \\\ + -DKDE_INSTALL_SYSCONFDIR:PATH=%{_kf6_sysconfdir} \\\ + -DKDE_INSTALL_USE_QT_SYS_PATHS:BOOL=ON + +%cmake_build_kf6 \\\ + %cmake_build \ + %cmake_build -t prepare_docs \ + %cmake_build -t generate_docs \ + %cmake_build -t generate_qch + +%cmake_install_kf6 \\\ + %cmake_install \ + DESTDIR=%{buildroot} ; export DESTDIR ; \ + %cmake_build -t install_html_docs \ + %cmake_build -t install_qch_docs + +# %%find_lang_kf6 +# +# This macro is used in KDE Frameworks 6 packages instead of %%find_lang, +# becasue find_lang is broken an it thinks that "_qt" in foobar_qt.qm is +# the name of the language. +# This macro should NOT be used with anything else but KDE Frameworks, since +# it does some assumptions regarding the names and locations and it might not +# work with other packages. +# We should eventually get this to RPM, or fix %%find_lang +# -- dvratil +# Usage: find_lang_kf6 fooBar6 +# - will look for fooBar6_qt.qm files in %%{buildroot}/usr/share/locale/ +# +%find_lang_kf6() \ + (find %{buildroot}/%{_datadir}/locale/ -name "%1.qm" -type f | sed ' \ + s:%{buildroot}/:: \ + s:%{_datadir}/locale/\\([a-zA-Z_\\@]*\\)/\\([a-zA-Z_]*\\)/%1.qm:%lang(\\1) %{_datadir}/locale/\\1/\\2/%1.qm:' > %1.lang) + +# Start of backwards compatible macros +# Used mostly in plasma and gear packages: +# %%maj_ver_kf6 +# %%min_ver_kf6 +# %%bug_ver_kf6 +# %%majmin_ver_kf6 +# %%stable_kf6 + +%maj_ver_kf6 %(echo %{version} | cut -d. -f1) +%min_ver_kf6 %(echo %{version} | cut -d. -f2) +%bug_ver_kf6 %(echo %{version} | cut -d. -f3) + +%stable_kf6 %( \ + if test %bug_ver_kf6 -ge 50 -o \\( %maj_ver_kf6 -eq 5 -a %min_ver_kf6 -ge 90 \\) ; then + echo "unstable" + else + echo "stable" + fi + ) + +%majmin_ver_kf6 %( \ + if test %bug_ver_kf6 -ge 50 -o \\( %maj_ver_kf6 -eq 5 -a %min_ver_kf6 -ge 90 \\) ; then + echo %{maj_ver_kf6}.%{min_ver_kf6}.%{bug_ver_kf6} + else + echo %{maj_ver_kf6}.%{min_ver_kf6} + fi + ) +# End of backwards compatible macros + +# SonicDE release trains. SonicDE ships a hard fork of KDE Frameworks and +# Plasma, so the versions are SonicDE's own and do not track KDE releases. +%_sonicde_frameworks_version @@sonicde_frameworks_VERSION@@ +%_sonicde_plasma_version @@sonicde_plasma_VERSION@@ diff --git a/sonic-rpm-macros/sonic-rpm-macros.spec b/sonic-rpm-macros/sonic-rpm-macros.spec new file mode 100644 index 0000000..e11cb13 --- /dev/null +++ b/sonic-rpm-macros/sonic-rpm-macros.spec @@ -0,0 +1,63 @@ +# Based on Fedora's kf6.spec, reduced to the RPM macros. The directories the +# frameworks install into are still owned by the distribution's kf6-filesystem +# package, which contains no code and therefore needs no fork. +%global debug_package %{nil} + +# Keep in sync with the SonicDE frameworks release train. +%global sonicde_frameworks_version 6.29.0.1 +# Keep in sync with the SonicDE Plasma release train. +%global sonicde_plasma_version 6.7.4.6 + +Name: sonic-rpm-macros +Version: %{sonicde_frameworks_version} +Release: 1%{?dist} +Summary: RPM macros for building SonicDE packages +License: BSD-3-Clause +URL: https://github.com/Sonic-DE +Source0: macros.kf6 +Source1: LICENSE + +BuildArch: noarch + +Requires: cmake >= 3 +Requires: qt6-rpm-macros >= 6 +Requires: gcc-c++ +Requires: doxygen +Requires: qt6-doc-devel +Requires: kde-qdoc-common +Requires: cmake(Qt6ToolsTools) +# Directory ownership only, no KDE code. +Requires: kf6-filesystem + +# SonicDE ships its own copy of the KF6 macros, so it replaces the ones from +# the distribution. +Provides: kf6-rpm-macros = %{version}-%{release} +Conflicts: kf6-rpm-macros < %{version}-%{release} + +%description +RPM macros for building the SonicDE hard fork of KDE Frameworks 6 and Plasma +on Enterprise Linux 10 and Fedora. + +%prep +%autosetup -c -T +cp -p %{SOURCE0} %{SOURCE1} . + +%build +%{nil} + +%install +install -Dpm644 macros.kf6 %{buildroot}%{_rpmconfigdir}/macros.d/macros.kf6 +install -Dpm644 LICENSE %{buildroot}%{_licensedir}/%{name}/LICENSE +sed -i \ + -e "s|@@kf6_VERSION@@|%{sonicde_frameworks_version}|g" \ + -e "s|@@sonicde_frameworks_VERSION@@|%{sonicde_frameworks_version}|g" \ + -e "s|@@sonicde_plasma_VERSION@@|%{sonicde_plasma_version}|g" \ + %{buildroot}%{_rpmconfigdir}/macros.d/macros.kf6 + +%files +%license LICENSE +%{_rpmconfigdir}/macros.d/macros.kf6 + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.29.0.1-1 +- Initial SonicDE macros package, based on Fedora's kf6.spec diff --git a/sonic-screen-library/sonic-screen-library.spec b/sonic-screen-library/sonic-screen-library.spec index 112b437..e66a99c 100644 --- a/sonic-screen-library/sonic-screen-library.spec +++ b/sonic-screen-library/sonic-screen-library.spec @@ -4,23 +4,23 @@ #Name: libkscreen Name: sonic-screen-library Summary: KDE display configuration library -Version: 6.6.4 +Version: 6.7.4 Release: 1%{?dist} License: GPL-2.0-or-later -#URL: https://invent.kde.org/plasma/%{name} +#URL: https://invent.kde.org/plasma/%%{name} URL: https://github.com/Sonic-DE/%{name} -#Source0: https://download.kde.org/%{stable_kf6}/plasma/%{version}/%{name}-%{version}.tar.xz -#Source1: https://download.kde.org/%{stable_kf6}/plasma/%{version}/%{name}-%{version}.tar.xz.sig +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz # KDE Frameworks -BuildRequires: extra-cmake-modules +BuildRequires: sonic-frameworks-cmake-modules BuildRequires: cmake(KF6Config) # Fedora -BuildRequires: kf6-rpm-macros +BuildRequires: sonic-rpm-macros Requires: kf6-filesystem # Misc @@ -99,6 +99,9 @@ Developer Documentation files for %{name} for use with KDevelop or QtCreator. %{_qt6_docdir}/*.qch %changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- Update to SonicDE 6.7.4 from the hard fork; build on Enterprise Linux 10 and Fedora + * Fri Apr 10 2026 Steve Cossette - 6.6.4-1 - 6.6.4 diff --git a/sonic-screen/sonic-screen.spec b/sonic-screen/sonic-screen.spec index 192e4f3..a4e0ab4 100644 --- a/sonic-screen/sonic-screen.spec +++ b/sonic-screen/sonic-screen.spec @@ -8,20 +8,20 @@ ExcludeArch: %{ix86} Name: sonic-screen Epoch: 1 -Version: 6.6.4 +Version: 6.7.4 Release: 1%{?dist} Summary: KDE Display Management software License: CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.0-or-later AND (GPL-2.0-only OR GPL-3.0-only) -#URL: https://invent.kde.org/plasma/%{name} +#URL: https://invent.kde.org/plasma/%%{name} URL: https://github.com/Sonic-DE/%{name} -#Source0: https://download.kde.org/%{stable_kf6}/plasma/%{version}/%{name}-%{version}.tar.xz -#Source1: https://download.kde.org/%{stable_kf6}/plasma/%{version}/%{name}-%{version}.tar.xz.sig +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz -BuildRequires: extra-cmake-modules -BuildRequires: kf6-rpm-macros +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros BuildRequires: systemd-rpm-macros BuildRequires: qt6-qtbase-devel @@ -85,6 +85,9 @@ KCM and KDED modules for managing displays in KDE. %{_userunitdir}/plasma-kscreen-osd.service %changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- Update to SonicDE 6.7.4 from the hard fork; build on Enterprise Linux 10 and Fedora + * Fri Apr 10 2026 Steve Cossette - 1:6.6.4-1 - 6.6.4 diff --git a/sonic-screenies/sonic-screenies.spec b/sonic-screenies/sonic-screenies.spec new file mode 100644 index 0000000..324b30d --- /dev/null +++ b/sonic-screenies/sonic-screenies.spec @@ -0,0 +1,156 @@ +# Generated for SonicDE from Fedora's spectacle.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-screenies fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-screenies +# Upstream KDE project: spectacle +%global oldname spectacle + +# For direct library dependencies +%if "%{__isa_bits}" == "64" +%global lib64_suffix ()(64bit) +%endif + +# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} + +#Name: spectacle +Name: sonic-screenies +Summary: Screenshot capture utility +Epoch: 1 +Version: 6.7.4.2 +Release: 1%{?dist} + +# Automatically converted from old format: GPLv2 - review is highly recommended. +License: GPL-2.0-only +#URL: https://www.kde.org/applications/graphics/spectacle/ +URL: https://github.com/Sonic-DE/%{reponame} + +%global revision %(echo %{version} | cut -d. -f3) +%if %{revision} >= 50 +%global stable unstable +%else +%global stable stable +%endif +#Source0: https://download.kde.org/%%{stable}/plasma/%%{maj_ver_kf6}.%%{min_ver_kf6}.%%{bug_ver_kf6}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable}/plasma/%%{maj_ver_kf6}.%%{min_ver_kf6}.%%{bug_ver_kf6}/%%{name}-%%{version}.tar.xz.sig + +## upstream patches + +## Upstreamable patches + +## downstream patches + +%global majmin %(echo %{version} | cut -d. -f1,2) + +BuildRequires: desktop-file-utils +BuildRequires: libappstream-glib + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros + +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6DocTools) +BuildRequires: cmake(KF6GlobalAccel) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6KirigamiPlatform) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6Purpose) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: cmake(KF6XmlGui) +BuildRequires: cmake(KF6StatusNotifierItem) +BuildRequires: cmake(KF6Prison) +BuildRequires: cmake(KF6Crash) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KQuickImageEditor) + +BuildRequires: cmake(KPipeWire) +BuildRequires: cmake(LayerShellQt) +BuildRequires: cmake(PlasmaWaylandProtocols) + +BuildRequires: qt6-qtbase-private-devel +BuildRequires: cmake(OpenCV) +BuildRequires: cmake(Qt6DBus) +BuildRequires: cmake(Qt6PrintSupport) +BuildRequires: cmake(Qt6QuickControls2) +BuildRequires: cmake(Qt6Quick) +BuildRequires: cmake(Qt6WaylandClient) +BuildRequires: cmake(Qt6Multimedia) +BuildRequires: cmake(Qt6QWebpPlugin) +BuildRequires: cmake(ZXing) + +BuildRequires: pkgconfig(wayland-client) +BuildRequires: pkgconfig(xcb-cursor) +BuildRequires: pkgconfig(xcb-image) +BuildRequires: pkgconfig(xcb-util) +BuildRequires: pkgconfig(xcb-xfixes) +BuildRequires: cmake(tesseract) + +# for systemd-related macros +BuildRequires: systemd-devel + +# Animated tray icon: https://pagure.io/fedora-kde/SIG/issue/601 +Recommends: qt6-qtimageformats%{?_isa} + +# f26+ upgrade path +%if 0%{?fedora} > 25 +Obsoletes: ksnapshot <= 15.08.3 +%endif + +# translations moved here +Conflicts: kde-l10n < 17.03 + +Provides: spectacle = %{version}-%{release} +Conflicts: spectacle < %{version}-%{release} + +%description +%{summary}. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 -DKDE_INSTALL_SYSTEMDUSERUNITDIR=%{_userunitdir} +%cmake_build + + +%install +%cmake_install + +%find_lang %{oldname} --all-name --with-html --with-man + + +%check +# [6.3.1.2] Bypassed. Reason: +# FAILED: • tag-invalid : versions are not in order [6.3.0 before 24.12.1] +appstream-util validate-relax --nonet %{buildroot}%{_kf6_metainfodir}/org.kde.spectacle.appdata.xml ||: +desktop-file-validate %{buildroot}%{_kf6_datadir}/applications/org.kde.spectacle.desktop + +%files -f %{name}.lang +%license LICENSES/* +%{_kf6_bindir}/spectacle +%{_kf6_datadir}/man/man1/spectacle.1* +%{_kf6_metainfodir}/org.kde.spectacle.appdata.xml +%{_kf6_datadir}/applications/org.kde.spectacle.desktop +%{_kf6_datadir}/dbus-1/interfaces/org.kde.Spectacle.xml +%{_kf6_datadir}/dbus-1/services/org.kde.Spectacle.service +%{_kf6_datadir}/dbus-1/services/org.kde.spectacle.service +%{_kf6_datadir}/icons/hicolor/*/apps/spectacle.* +%{_kf6_datadir}/kglobalaccel/org.kde.spectacle.desktop +%{_kf6_datadir}/knotifications6/spectacle.notifyrc +%{_kf6_datadir}/qlogging-categories6/%{oldname}* +%{_kf6_libdir}/kconf_update_bin/spectacle* +%{_kf6_datadir}/kconf_update/spectacle* +%{_userunitdir}/app-org.kde.spectacle.service + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4.2-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-screenlocker/sonic-screenlocker.spec b/sonic-screenlocker/sonic-screenlocker.spec index 47983c0..93e9f3b 100644 --- a/sonic-screenlocker/sonic-screenlocker.spec +++ b/sonic-screenlocker/sonic-screenlocker.spec @@ -3,16 +3,16 @@ %define oldname kscreenlocker Name: sonic-screenlocker -Version: 6.6.4 +Version: 6.7.4 Release: 1%{?dist} Summary: Library and components for secure lock screen architecture License: BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.1-only AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) -#URL: https://invent.kde.org/plasma/%{name} +#URL: https://invent.kde.org/plasma/%%{name} URL: https://github.com/Sonic-DE/%{name} -#Source0: https://download.kde.org/%{stable_kf6}/plasma/%{version}/%{name}-%{version}.tar.xz -#Source1: https://download.kde.org/%{stable_kf6}/plasma/%{version}/%{name}-%{version}.tar.xz.sig +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz # help upgrades, split from plasma-workspace since 5.5 @@ -27,8 +27,8 @@ BuildRequires: qt6-qtbase-devel BuildRequires: qt6-qtbase-private-devel BuildRequires: cmake(Qt6Quick) -BuildRequires: kf6-rpm-macros -BuildRequires: extra-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: sonic-frameworks-cmake-modules BuildRequires: cmake(KF6Crash) BuildRequires: cmake(KF6GlobalAccel) @@ -106,6 +106,9 @@ developing applications that use %{name}. %changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- Update to SonicDE 6.7.4 from the hard fork; build on Enterprise Linux 10 and Fedora + * Fri Apr 10 2026 Steve Cossette - 6.6.4-1 - 6.6.4 diff --git a/sonic-silver-gtk/sonic-silver-gtk.spec b/sonic-silver-gtk/sonic-silver-gtk.spec new file mode 100644 index 0000000..151d9f6 --- /dev/null +++ b/sonic-silver-gtk/sonic-silver-gtk.spec @@ -0,0 +1,130 @@ +# Generated for SonicDE from Fedora's breeze-gtk.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-silver-gtk fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-silver-gtk +# Upstream KDE project: breeze-gtk +%global oldname breeze-gtk + +#Name: breeze-gtk +Name: sonic-silver-gtk +Version: 6.7.4 +Release: 1%{?dist} +Summary: Breeze widget theme for GTK + +License: BSD-3-Clause AND CC0-1.0 +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: http://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: http://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +BuildArch: noarch + +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: gtk2-engines +BuildRequires: sonic-breeze-devel +BuildRequires: python3-cairo-devel +BuildRequires: sassc + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros + +# not used directly, but is an indirect dep from ECMQueryQmake.cmake +# probably should be fixed there -- rex +BuildRequires: cmake(Qt6Core) + +# main meta package to depend on all subpkgs, for cleaner/simpler upgrade path +Requires: %{name}-gtk2 = %{version}-%{release} +Requires: %{name}-gtk3 = %{version}-%{release} +Requires: %{name}-gtk4 = %{version}-%{release} + +Provides: breeze-gtk = %{version}-%{release} +Conflicts: breeze-gtk < %{version}-%{release} + +%description +%{summary}. + +%package common +Summary: Breeze widget theme for GTK common files +Conflicts: sonic-silver-gtk < 5.20.2-2 + +Provides: breeze-gtk-common = %{version}-%{release} +Conflicts: breeze-gtk-common < %{version}-%{release} + +%description common +%{summary}. + +%package gtk2 +Summary: Breeze widget theme for GTK 2 +Requires: gtk2-engines +Requires: %{name}-common = %{version}-%{release} +Supplements: (sonic-breeze and gtk2) +Provides: breeze-gtk-gtk2 = %{version}-%{release} +Conflicts: breeze-gtk-gtk2 < %{version}-%{release} + +%description gtk2 +%{summary}. + +%package gtk3 +Summary: Breeze widget theme for GTK 3 +Requires: %{name}-common = %{version}-%{release} +Supplements: (sonic-breeze and gtk3) +Provides: breeze-gtk-gtk3 = %{version}-%{release} +Conflicts: breeze-gtk-gtk3 < %{version}-%{release} + +%description gtk3 +%{summary}. + +%package gtk4 +Summary: Breeze widget theme for GTK 4 +Requires: %{name}-common = %{version}-%{release} +Supplements: (sonic-breeze and gtk4) +Provides: breeze-gtk-gtk4 = %{version}-%{release} +Conflicts: breeze-gtk-gtk4 < %{version}-%{release} + +%description gtk4 +%{summary}. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 -DBUILD_WITH_QT6=ON +%cmake_build + +%install +%cmake_install + +%files +# empty metapackage + +%files common +%license LICENSES/*.txt +%doc README.md +%dir %{_datadir}/themes/Breeze/ +%{_datadir}/themes/Breeze/assets/ +%{_datadir}/themes/Breeze/settings.ini +%dir %{_datadir}/themes/Breeze-Dark/ +%{_datadir}/themes/Breeze-Dark/assets/ +%{_datadir}/themes/Breeze-Dark/settings.ini + +%files gtk2 +%{_datadir}/themes/Breeze/gtk-2.0/ +%{_datadir}/themes/Breeze-Dark/gtk-2.0/ + +%files gtk3 +%{_datadir}/themes/Breeze/gtk-3.0/ +%{_datadir}/themes/Breeze-Dark/gtk-3.0/ + +%files gtk4 +%{_datadir}/themes/Breeze/gtk-4.0/ +%{_datadir}/themes/Breeze-Dark/gtk-4.0/ + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-silver-theme/sonic-silver-theme.spec b/sonic-silver-theme/sonic-silver-theme.spec index 5ad55a2..7bf0319 100644 --- a/sonic-silver-theme/sonic-silver-theme.spec +++ b/sonic-silver-theme/sonic-silver-theme.spec @@ -1,89 +1,100 @@ +# Upstream SonicDE project: sonic-silver (Breeze/Silver derived) +%global reponame sonic-silver + Name: sonic-silver-theme -Version: 6.6.0 -Release: 1 -Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz -Summary: Highly customizable theming for the Sonic Desktop Environment -URL: https://github.com/Sonic-DE/silver-theme +Version: 6.7.4.2 +Release: 1%{?dist} +Summary: Silver widget style, window decoration and theme for SonicDE +URL: https://github.com/Sonic-DE/%{reponame} +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz License: GPL-2.0-or-later -#Group: Graphical Desktop/KDE -#BuildSystem: cmake -#BuildOption: -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DKDE_INSTALL_USE_QT_SYS_PATHS=ON +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: cmake +BuildRequires: gcc-c++ +BuildRequires: gettext +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6DBus) +BuildRequires: cmake(Qt6Gui) +BuildRequires: cmake(Qt6Quick) +BuildRequires: cmake(Qt6Svg) +BuildRequires: cmake(Qt6Widgets) +BuildRequires: cmake(Qt6Xml) +BuildRequires: qt6-qtbase-private-devel +BuildRequires: cmake(KDecoration3) +BuildRequires: cmake(KF6ColorScheme) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6FrameworkIntegration) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: cmake(KF6KCMUtils) +BuildRequires: cmake(KF6KirigamiPlatform) +BuildRequires: cmake(KF6WindowSystem) -BuildRequires: extra-cmake-modules -BuildRequires: appstream -BuildRequires: qt5-qtbase-devel -BuildRequires: cmake(KF5Config) -BuildRequires: cmake(KF5ConfigWidgets) -BuildRequires: cmake(KF5CoreAddons) -BuildRequires: cmake(KF5FrameworkIntegration) -BuildRequires: cmake(KF5GuiAddons) -BuildRequires: cmake(KF5I18n) -BuildRequires: cmake(KF5IconThemes) -BuildRequires: cmake(KF5Kirigami2) -BuildRequires: cmake(KF5WindowSystem) -BuildRequires: cmake(Qt5DBus) -BuildRequires: cmake(Qt5Quick) -BuildRequires: cmake(Qt5Widgets) -BuildRequires: cmake(Qt5X11Extras) -BuildRequires: cmake(KDecoration3) -BuildRequires: cmake(KF6ColorScheme) -BuildRequires: cmake(KF6Config) -BuildRequires: cmake(KF6CoreAddons) -BuildRequires: cmake(KF6FrameworkIntegration) -BuildRequires: cmake(KF6GuiAddons) -BuildRequires: cmake(KF6I18n) -BuildRequires: cmake(KF6IconThemes) -BuildRequires: cmake(KF6KCMUtils) -BuildRequires: cmake(KF6KirigamiPlatform) -BuildRequires: cmake(KF6WindowSystem) -BuildRequires: cmake(Qt6Core) -BuildRequires: cmake(Qt6DBus) -BuildRequires: cmake(Qt6Quick) -BuildRequires: cmake(Qt6Svg) -BuildRequires: cmake(Qt6Widgets) -BuildRequires: cmake(Qt6Xml) -BuildRequires: cmake(Qt6QmlCore) -BuildRequires: cmake(Qt6QmlNetwork) -BuildRequires: cmake(Qt6ExamplesAssetDownloaderPrivate) -BuildRequires: pkgconfig(Qt6QmlAssetDownloader) -BuildRequires: qt6-qtbase-theme-gtk3 +# SonicDE replaces the Plasma Breeze theme packages. +Provides: breeze = %{version}-%{release} +Conflicts: breeze < %{version}-%{release} +Provides: breeze-cursor-theme = %{version}-%{release} +Conflicts: breeze-cursor-theme < %{version}-%{release} %description -Highly customizable theming for the KDE Plasma desktop. Install, and enable in System Settings -> Appearance -> Global Themes (or individually in Window Decorations, Application Style and Icons). +Silver is the default widget style, window decoration, color scheme, cursor +theme and wallpaper set of the Sonic Desktop Environment. It is derived from +the Breeze theme of KDE Plasma. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Provides: breeze-devel%{?_isa} = %{version}-%{release} +Conflicts: breeze-devel < %{version}-%{release} + +%description devel +This package contains the CMake configuration and header files needed to +build software against the Silver theme libraries. %prep -%autosetup -p1 +%autosetup -p1 -n %{reponame}-%{version} %build -%cmake_kf6 \ -%if %[(0%{?rhel} >= 10)] - -DCMAKE_INSTALL_PREFIX=/usr \ - -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_TESTING=OFF \ - -DKDE_INSTALL_USE_QT_SYS_PATHS=ON -%endif +%cmake_kf6 -DBUILD_TESTING:BOOL=OFF +%cmake_build -%post -p /sbin/ldconfig -%postun -p /sbin/ldconfig +%install +%cmake_install +%find_lang silver_kwin_deco +%find_lang silver_style_config +cat silver_style_config.lang >> silver_kwin_deco.lang -%files -%{_bindir}/%{name}-settings -%{_libdir}/cmake/Klassy -%{_libdir}/libklassycommon* -%{_libdir}/qt5/plugins/styles/klassy5.so -%{_libdir}/qt6/plugins/kstyle_config/klassystyleconfig.so -%{_libdir}/qt6/plugins/org.kde.kdecoration3.kcm/kcm_klassydecoration.so -%{_libdir}/qt6/plugins/org.kde.kdecoration3.kcm/klassydecoration -%{_libdir}/qt6/plugins/org.kde.kdecoration3/org.kde.klassy.so -%{_libdir}/qt6/plugins/styles/klassy6.so -%{_iconsdir}/klassy-dark -%{_iconsdir}/klassy -%{_iconsdir}/hicolor/scalable/apps/klassy-settings.svgz -%{_datadir}/kstyle/themes/%{name}.themerc -%{_datadir}/plasma/desktoptheme/klassy -%{_datadir}/plasma/layout-templates/* -%{_datadir}/plasma/look-and-feel/* -%{_datadir}/applications/kcm_klassydecoration.desktop -%{_datadir}/applications/klassy* -%{_datadir}/color-schemes/Klassy* +%files -f silver_kwin_deco.lang +%license LICENSES/ +%doc README.md AUTHORS +%{_bindir}/kcursorgen +%{_bindir}/silver-settings +%{_libdir}/libsilvercommon6.so.6* +%{_kf6_qtplugindir}/styles/silver6.so +%{_kf6_qtplugindir}/kstyle_config/silverstyleconfig.so +%{_kf6_qtplugindir}/org.kde.kdecoration3/org.kde.silver.so +%{_kf6_qtplugindir}/org.kde.kdecoration3.kcm/kcm_silverdecoration.so +%{_kf6_qtplugindir}/org.kde.kdecoration3.kcm/silverdecoration/ +%{_datadir}/applications/kcm_silverdecoration.desktop +%{_datadir}/applications/silver-settings.desktop +%{_datadir}/applications/silverstyleconfig.desktop +%{_datadir}/kstyle/themes/silver.themerc +%{_datadir}/color-schemes/*.colors +%{_datadir}/icons/hicolor/scalable/apps/silver-settings.svgz +%{_datadir}/icons/silver_cursors_dark/ +%{_datadir}/icons/silver_cursors_light/ +%{_datadir}/plasma/layout-templates/org.kde.silver.*/ +%{_datadir}/plasma/look-and-feel/org.kde.silver*/ +%{_datadir}/wallpapers/Silver/ + +%files devel +%{_libdir}/cmake/SonicSilver/ +%{_libdir}/cmake/Breeze/ + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4.2-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-ssh-password-prompt/sonic-ssh-password-prompt.spec b/sonic-ssh-password-prompt/sonic-ssh-password-prompt.spec new file mode 100644 index 0000000..bf4b448 --- /dev/null +++ b/sonic-ssh-password-prompt/sonic-ssh-password-prompt.spec @@ -0,0 +1,79 @@ +# Generated for SonicDE from Fedora's ksshaskpass.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-ssh-password-prompt fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-ssh-password-prompt +# Upstream KDE project: ksshaskpass +%global oldname ksshaskpass + + +# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} + +#Name: ksshaskpass +Name: sonic-ssh-password-prompt +Version: 6.7.4 +Release: 1%{?dist} +Summary: A ssh-add helper that uses kwallet and kpassworddialog + +# Automatically converted from old format: GPLv2 - review is highly recommended. +License: GPL-2.0-only +#URL: https://cgit.kde.org/%%{name}.git +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: gettext +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6DocTools) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: cmake(KF6Wallet) +BuildRequires: pkgconfig(Qt6Core) +BuildRequires: cmake(Qt6Keychain) + +Provides: ksshaskpass = %{version}-%{release} +Conflicts: ksshaskpass < %{version}-%{release} + +%description +%{summary}. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build + + +%install +%cmake_install + +%find_lang ksshaskpass + +# Setup environment variables +mkdir -p %{buildroot}%{_sysconfdir}/xdg/plasma-workspace/env/ +cat > %{buildroot}%{_sysconfdir}/xdg/plasma-workspace/env/ksshaskpass.sh << EOF +SSH_ASKPASS=%{_kf6_bindir}/ksshaskpass +export SSH_ASKPASS +EOF + + +%files -f ksshaskpass.lang +%doc ChangeLog +%license LICENSES/* +%{_kf6_bindir}/ksshaskpass +%{_kf6_datadir}/applications/org.kde.ksshaskpass.desktop +%config(noreplace) %{_sysconfdir}/xdg/plasma-workspace/env/ksshaskpass.sh +%{_mandir}/man1/ksshaskpass.1* + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-sysguard-library/sonic-sysguard-library.spec b/sonic-sysguard-library/sonic-sysguard-library.spec index b704e36..16e4e98 100644 --- a/sonic-sysguard-library/sonic-sysguard-library.spec +++ b/sonic-sysguard-library/sonic-sysguard-library.spec @@ -4,19 +4,19 @@ #Name: libksysguard Name: sonic-sysguard-library Summary: Library for managing processes running on the system -Version: 6.6.4 +Version: 6.7.4 Release: 1%{?dist} License: BSD-2-Clause AND BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) -#URL: https://invent.kde.org/plasma/%{name} +#URL: https://invent.kde.org/plasma/%%{name} URL: https://github.com/Sonic-DE/%{name} -#Source0: http://download.kde.org/%{stable_kf6}/plasma/%{version}/%{name}-%{version}.tar.xz -#Source1: http://download.kde.org/%{stable_kf6}/plasma/%{version}/%{name}-%{version}.tar.xz.sig +#Source0: http://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +#Source1: http://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz -BuildRequires: extra-cmake-modules -BuildRequires: kf6-rpm-macros +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros # kf6 required BuildRequires: cmake(KF6CoreAddons) BuildRequires: cmake(KF6Config) @@ -137,6 +137,9 @@ developing applications that use %{name}. %changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- Update to SonicDE 6.7.4 from the hard fork; build on Enterprise Linux 10 and Fedora + * Fri Apr 10 2026 Steve Cossette - 6.6.4-1 - 6.6.4 diff --git a/sonic-system-info/sonic-system-info.spec b/sonic-system-info/sonic-system-info.spec index b27d714..0ca8925 100644 --- a/sonic-system-info/sonic-system-info.spec +++ b/sonic-system-info/sonic-system-info.spec @@ -7,7 +7,7 @@ ExcludeArch: %{ix86} Name: sonic-system-info -Version: 6.6.4 +Version: 6.7.4 Release: 1%{?dist} Summary: KDE Info Center @@ -15,14 +15,14 @@ License: BSD-2-Clause AND BSD-3-Clause AND CC0-1.0 AND FSFAP AND GPL-2.0-only AN #URL: https://invent.kde.org/plasma/% URL: https://github.com/Sonic-DE/%{name} -#Source0: http://download.kde.org/%{stable_kf6}/plasma/%{version}/%{name}-%{version}.tar.xz -#Source1: http://download.kde.org/%{stable_kf6}/plasma/%{version}/%{name}-%{version}.tar.xz.sig +#Source0: http://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +#Source1: http://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz BuildRequires: qt6-qtbase-devel -BuildRequires: kf6-rpm-macros -BuildRequires: extra-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: sonic-frameworks-cmake-modules BuildRequires: cmake(KF6Completion) BuildRequires: cmake(KF6Config) @@ -54,7 +54,7 @@ BuildRequires: libraw1394-devel %endif BuildRequires: cmake(KF6Kirigami2) -Requires: kf6-kirigami2%{?_isa} +Requires: sonic-frameworks-quick-ui%{?_isa} # runtime query of usb.ids, oui.txt Requires: hwdata @@ -100,7 +100,7 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/org.kde.kinfocenter.d desktop-file-validate %{buildroot}%{_datadir}/applications/kcm_about-distro.desktop desktop-file-validate %{buildroot}%{_datadir}/applications/kcm_energyinfo.desktop # commented out until upstream fixes a duplicate entries problem -#appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.appdata.xml +#appstream-util validate-relax --nonet %%{buildroot}%%{_metainfodir}/*.appdata.xml %files -f %{name}.lang %{_datadir}/applications/kcm_energyinfo.desktop @@ -121,6 +121,9 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/kcm_energyinfo.deskto %{_libexecdir}/kinfocenter-vulkan-helper %changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- Update to SonicDE 6.7.4 from the hard fork; build on Enterprise Linux 10 and Fedora + * Fri Apr 10 2026 Steve Cossette - 6.6.4-1 - 6.6.4 diff --git a/sonic-system-log/ksystemlog-21.12.2-fedora.patch b/sonic-system-log/ksystemlog-21.12.2-fedora.patch new file mode 100644 index 0000000..1d18176 --- /dev/null +++ b/sonic-system-log/ksystemlog-21.12.2-fedora.patch @@ -0,0 +1,83 @@ +diff --git a/src/modes/apache/apacheConfiguration.cpp b/src/modes/apache/apacheConfiguration.cpp +index e39f06d..45eabac 100644 +--- a/src/modes/apache/apacheConfiguration.cpp ++++ b/src/modes/apache/apacheConfiguration.cpp +@@ -10,10 +10,10 @@ ApacheConfiguration::ApacheConfiguration() + { + mConfiguration->setCurrentGroup(QStringLiteral("ApacheLogMode")); + +- const QStringList defaultApachePaths{QStringLiteral("/var/log/apache2/error.log")}; ++ const QStringList defaultApachePaths{QStringLiteral("/var/log/httpd/error.log")}; + mConfiguration->addItemStringList(QStringLiteral("ApacheLogFilesPaths"), mApachePaths, defaultApachePaths, QStringLiteral("ApacheLogFilesPaths")); + +- const QStringList defaultApacheAccessPaths{QStringLiteral("/var/log/apache2/access.log")}; ++ const QStringList defaultApacheAccessPaths{QStringLiteral("/var/log/httpd/access.log")}; + mConfiguration->addItemStringList(QStringLiteral("ApacheAccessLogFilesPaths"), + mApacheAccessPaths, + defaultApacheAccessPaths, +diff --git a/src/modes/authentication/authenticationConfiguration.cpp b/src/modes/authentication/authenticationConfiguration.cpp +index 117f084..47d1145 100644 +--- a/src/modes/authentication/authenticationConfiguration.cpp ++++ b/src/modes/authentication/authenticationConfiguration.cpp +@@ -10,7 +10,7 @@ AuthenticationConfiguration::AuthenticationConfiguration() + { + mConfiguration->setCurrentGroup(QStringLiteral("AuthenticationLogMode")); + +- const QString defaultAuthenticationPath{QStringLiteral("/var/log/auth.log")}; ++ const QString defaultAuthenticationPath{QStringLiteral("/var/log/secure")}; + mConfiguration->addItemString(QStringLiteral("LogFilePath"), mAuthenticationPath, defaultAuthenticationPath, QStringLiteral("LogFilePath")); + + const QStringList defaultWarningKeywords{QStringLiteral("failed")}; +diff --git a/src/modes/cron/cronConfiguration.cpp b/src/modes/cron/cronConfiguration.cpp +index 50ccda4..0e43168 100644 +--- a/src/modes/cron/cronConfiguration.cpp ++++ b/src/modes/cron/cronConfiguration.cpp +@@ -10,7 +10,7 @@ CronConfiguration::CronConfiguration() + { + mConfiguration->setCurrentGroup(QStringLiteral("CronLogMode")); + +- const QStringList defaultCronPaths{QStringLiteral("/var/log/syslog")}; ++ const QStringList defaultCronPaths{QStringLiteral("/var/log/cron")}; + mConfiguration->addItemStringList(QStringLiteral("LogFilesPaths"), mCronPaths, defaultCronPaths, QStringLiteral("LogFilesPaths")); + + const QString defaultProcessFilter(QStringLiteral("/usr/sbin/cron")); +diff --git a/src/modes/daemon/daemonConfiguration.cpp b/src/modes/daemon/daemonConfiguration.cpp +index ce2b902..fc7d899 100644 +--- a/src/modes/daemon/daemonConfiguration.cpp ++++ b/src/modes/daemon/daemonConfiguration.cpp +@@ -10,7 +10,7 @@ DaemonConfiguration::DaemonConfiguration() + { + mConfiguration->setCurrentGroup(QStringLiteral("DaemonLogMode")); + +- const QStringList defaultDaemonPaths{QStringLiteral("/var/log/daemon.log")}; ++ const QStringList defaultDaemonPaths{QStringLiteral("/var/log/boot.log")}; + mConfiguration->addItemStringList(QStringLiteral("LogFilesPaths"), mDaemonPaths, defaultDaemonPaths, QStringLiteral("LogFilesPaths")); + } + +diff --git a/src/modes/postfix/postfixConfiguration.cpp b/src/modes/postfix/postfixConfiguration.cpp +index 484daad..d72ea12 100644 +--- a/src/modes/postfix/postfixConfiguration.cpp ++++ b/src/modes/postfix/postfixConfiguration.cpp +@@ -8,8 +8,7 @@ + + PostfixConfiguration::PostfixConfiguration() + : GenericLogModeConfiguration(QStringLiteral(POSTFIX_LOG_MODE_ID), +- QStringList() << QStringLiteral("/var/log/mail.log") << QStringLiteral("/var/log/mail.info") +- << QStringLiteral("/var/log/mail.warn") << QStringLiteral("/var/log/mail.err"), ++ QStringList() << QStringLiteral("/var/log/maillog"), + QList() << Globals::NOTICE_LOG_LEVEL_ID << Globals::INFORMATION_LOG_LEVEL_ID << Globals::WARNING_LOG_LEVEL_ID + << Globals::ERROR_LOG_LEVEL_ID) + { +diff --git a/src/modes/system/systemConfiguration.cpp b/src/modes/system/systemConfiguration.cpp +index 33eb1a5..786c73a 100644 +--- a/src/modes/system/systemConfiguration.cpp ++++ b/src/modes/system/systemConfiguration.cpp +@@ -8,7 +8,7 @@ + + SystemConfiguration::SystemConfiguration() + : GenericLogModeConfiguration(QStringLiteral(SYSTEM_LOG_MODE_ID), +- QStringList() << QStringLiteral("/var/log/syslog"), ++ QStringList() << QStringLiteral("/var/log/cron"), + QList() << Globals::INFORMATION_LOG_LEVEL_ID) + { + /* diff --git a/sonic-system-log/sonic-system-log.spec b/sonic-system-log/sonic-system-log.spec new file mode 100644 index 0000000..3cebcca --- /dev/null +++ b/sonic-system-log/sonic-system-log.spec @@ -0,0 +1,103 @@ +# Generated for SonicDE from Fedora's ksystemlog.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-system-log fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-system-log +# Upstream KDE project: ksystemlog +%global oldname ksystemlog + + +# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} + +#Name: ksystemlog +Name: sonic-system-log +Summary: System Log Viewer for KDE +Version: 26.04.3 +Release: 1%{?dist} + +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later +#URL: https://apps.kde.org/ksystemlog/ +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/release-service/%%{version}/src/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz + +## upstreamable patches + +## downstream patches +# fix ksystemlog to find log files in fedora locations +Patch1: ksystemlog-21.12.2-fedora.patch + +BuildRequires: desktop-file-utils +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: libappstream-glib + +BuildRequires: cmake(Qt6Concurrent) +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6Widgets) +BuildRequires: cmake(Qt6Test) +BuildRequires: cmake(Qt6PrintSupport) +BuildRequires: cmake(Qt6Core5Compat) +BuildRequires: cmake(Qt6Network) + +BuildRequires: cmake(KF6XmlGui) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: cmake(KF6ItemViews) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6Archive) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6Completion) +BuildRequires: cmake(KF6TextWidgets) +BuildRequires: cmake(KF6DocTools) +BuildRequires: cmake(KF6Crash) + +BuildRequires: pkgconfig(libsystemd) +BuildRequires: pkgconfig(audit) + +Provides: ksystemlog = %{version}-%{release} +Conflicts: ksystemlog < %{version}-%{release} + +%description +This program is developed for beginner users, who don't know how to find +information about their Linux system, and don't know where log files are. + +It is also of course designed for advanced users, who quickly want to understand +problems of their machine with a more powerful and graphical tool than tail -f +and less commands. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build + + +%install +%cmake_install + +%find_lang %{oldname} --all-name --with-html + + +%check +desktop-file-validate %{buildroot}%{_kf6_datadir}/applications/org.kde.%{oldname}.desktop +appstream-util validate-relax --nonet %{buildroot}%{_kf6_metainfodir}/org.kde.ksystemlog.appdata.xml + + +%files -f %{name}.lang +%license LICENSES +%{_kf6_bindir}/ksystemlog +%{_kf6_datadir}/applications/org.kde.ksystemlog.desktop +%{_kf6_datadir}/qlogging-categories6/ksystemlog.categories +%{_kf6_metainfodir}/org.kde.ksystemlog.appdata.xml + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 26.04.3-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-system-monitor/sonic-system-monitor.spec b/sonic-system-monitor/sonic-system-monitor.spec new file mode 100644 index 0000000..fc85e3a --- /dev/null +++ b/sonic-system-monitor/sonic-system-monitor.spec @@ -0,0 +1,100 @@ +# Generated for SonicDE from Fedora's plasma-systemmonitor.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-system-monitor fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-system-monitor +# Upstream KDE project: plasma-systemmonitor +%global oldname plasma-systemmonitor + + +# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} + +#Name: plasma-systemmonitor +Name: sonic-system-monitor +Version: 6.7.4 +Release: 1%{?dist} +Summary: An application for monitoring system resources + +License: BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-3.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-3.0-only AND LGPL-3.0-or-later AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: http://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: http://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +## upstream patches + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6Crash) +BuildRequires: cmake(KF6Declarative) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6ItemModels) +BuildRequires: cmake(KF6Service) +BuildRequires: cmake(KF6GlobalAccel) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6NewStuff) +# runtime +BuildRequires: cmake(KF6Kirigami) +BuildRequires: cmake(KF6KirigamiAddons) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: sonic-system-stats + +BuildRequires: sonic-sysguard-library-devel + +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtdeclarative-devel + +# runtime +Requires: sonic-frameworks-quick-ui%{?_isa} +Requires: sonic-frameworks-quick-ui-addons%{?_isa} +Requires: sonic-frameworks-icon-themes%{?_isa} +Requires: sonic-system-stats%{?_isa} +Requires: sonic-frameworks-quick-charts%{?_isa} + +Obsoletes: ksysguard < 5.23 + +Provides: plasma-systemmonitor = %{version}-%{release} +Conflicts: plasma-systemmonitor < %{version}-%{release} + +%description +An interface for monitoring system sensors, process information and other system +resources. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build + + +%install +%cmake_install +%find_lang %{oldname} --all-name --with-html + +%files -f %{name}.lang +%license LICENSES/*.txt +%{_bindir}/plasma-systemmonitor +%{_datadir}/applications/org.kde.plasma-systemmonitor.desktop +%{_datadir}/plasma/kinfocenter/externalmodules/kcm_external_plasma-systemmonitor.desktop +%{_kf6_datadir}/kglobalaccel/org.kde.plasma-systemmonitor.desktop +%{_kf6_datadir}/knsrcfiles/ +%{_kf6_datadir}/metainfo/org.kde.plasma-systemmonitor.metainfo.xml +%{_kf6_datadir}/ksysguard/sensorfaces/ +%{_kf6_datadir}/plasma-systemmonitor/ +%{_kf6_qmldir}/org/kde/ksysguard/ +%{_libdir}/libPlasmaSystemMonitorPage.so +%{_libdir}/libPlasmaSystemMonitorTable.so +%{_kf6_datadir}/kconf_update/plasma-systemmonitor* + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-system-stats/sonic-system-stats.spec b/sonic-system-stats/sonic-system-stats.spec new file mode 100644 index 0000000..18eae58 --- /dev/null +++ b/sonic-system-stats/sonic-system-stats.spec @@ -0,0 +1,94 @@ +# Generated for SonicDE from Fedora's ksystemstats.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-system-stats fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-system-stats +# Upstream KDE project: ksystemstats +%global oldname ksystemstats + +#Name: ksystemstats +Name: sonic-system-stats +Version: 6.7.4 +Release: 1%{?dist} +Summary: KSystemStats is a daemon that collects statistics about the running system. + +License: BSD-2-Clause AND BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: http://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: http://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +BuildRequires: sonic-sysguard-library-devel + +BuildRequires: sonic-rpm-macros +BuildRequires: systemd-rpm-macros +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6Crash) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6DocTools) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: cmake(KF6ItemViews) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6NewStuff) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6Solid) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: cmake(KF6NetworkManagerQt) + +BuildRequires: cmake(Qt6Widgets) + +BuildRequires: libnl3-devel +BuildRequires: lm_sensors-devel +BuildRequires: systemd-devel +BuildRequires: pkgconfig(libpcap) +BuildRequires: libdrm-devel + +Provides: ksystemstats = %{version}-%{release} +Conflicts: ksystemstats < %{version}-%{release} + +%description +KSystemStats is a daemon that collects statistics about the running system. + +%package devel +Summary: Developer files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +Provides: ksystemstats-devel = %{version}-%{release} +Conflicts: ksystemstats-devel < %{version}-%{release} + +%description devel +%{summary}. + + +%prep +%autosetup -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build + +%install +%cmake_install +%find_lang ksystemstats_plugins + + +%files -f ksystemstats_plugins.lang +%doc README.md +%license LICENSES/* +%{_kf6_bindir}/ksystemstats +%{_kf6_bindir}/kstatsviewer +%{_datadir}/dbus-1/services/org.kde.ksystemstats1.service +%{_userunitdir}/plasma-ksystemstats.service +%{_qt6_plugindir}/ksystemstats/ +%{_kf6_datadir}/qlogging-categories6/ksystemstats.categories +%caps(cap_perfmon=ep) %{_libexecdir}/ksystemstats_intel_helper + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-terminal-tools/sonic-terminal-tools.spec b/sonic-terminal-tools/sonic-terminal-tools.spec new file mode 100644 index 0000000..45ae576 --- /dev/null +++ b/sonic-terminal-tools/sonic-terminal-tools.spec @@ -0,0 +1,128 @@ +# Generated for SonicDE from Fedora's kde-cli-tools.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-terminal-tools fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-terminal-tools +# Upstream KDE project: kde-cli-tools +%global oldname kde-cli-tools + +#Name: kde-cli-tools +Name: sonic-terminal-tools +Version: 6.7.4 +Release: 1%{?dist} + +Summary: Tools based on KDE Frameworks 5 to better interact with the system + +License: Artistic-2.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-only AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +## upstream patches + +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtbase-private-devel +BuildRequires: cmake(Qt6Qml) +BuildRequires: cmake(Qt6Svg) + +BuildRequires: sonic-rpm-macros + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6DocTools) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6KCMUtils) +BuildRequires: cmake(KF6Su) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: cmake(KF6Parts) +BuildRequires: cmake(KF6XmlGui) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: sonic-workspace-devel >= %{version} +Requires: sonic-workspace-libs%{?_isa} >= %{version} + +# upgrade path, from when this wasn't split out +Requires: kdesu = 1:%{version}-%{release} + +# unversioned utilitized landed here in 5.23.90, see also +# https://phabricator.kde.org/T14763 +# https://invent.kde.org/plasma/kde-cli-tools/-/merge_requests/23 +Conflicts: kde-runtime < 17.08.3-23 + +Provides: kde-cli-tools = %{version}-%{release} +Conflicts: kde-cli-tools < %{version}-%{release} + +%description +Provides several KDE and Plasma specific command line tools to allow +better interaction with the system. + +%package -n kdesu +Summary: Runs a program with elevated privileges +Epoch: 1 +Conflicts: kde-runtime < 14.12.3-2 +Conflicts: kde-runtime-docs < 14.12.3-2 +%description -n kdesu +%{summary}. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build + + +%install +%cmake_install +%find_lang kdeclitools_qt --with-qt --with-kde --all-name + +ln -s %{_kf6_libexecdir}/kdesu %{buildroot}%{_bindir}/kdesu + + +%files -f kdeclitools_qt.lang +%{_bindir}/kbroadcastnotification +%{_bindir}/kdecp +%{_bindir}/kdecp5 +%{_bindir}/kde-inhibit +%{_bindir}/kdemv +%{_bindir}/kdemv5 +%{_bindir}/kde-open +%{_bindir}/kde-open5 +%{_bindir}/keditfiletype +%{_bindir}/keditfiletype5 +%{_bindir}/kinfo +%{_bindir}/kioclient +%{_bindir}/kioclient5 +%{_bindir}/kmimetypefinder +%{_bindir}/kmimetypefinder5 +%{_bindir}/kstart +%{_bindir}/kstart5 +%{_bindir}/ksvgtopng +%{_bindir}/ksvgtopng5 +%{_bindir}/plasma-open-settings +%{_kf6_libexecdir}/kdeeject +%{_kf6_qtplugindir}/plasma/kcms/systemsettings_qwidgets/kcm_filetypes.so +%{_datadir}/doc/HTML/*/kcontrol6 +%{_datadir}/applications/org.kde.keditfiletype.desktop +%{_datadir}/applications/org.kde.plasma.settings.open.desktop +%{_datadir}/applications/kcm_filetypes.desktop +%{_datadir}/zsh/site-functions/_kde-inhibit + +%files -n kdesu +%{_bindir}/kdesu +%{_kf6_libexecdir}/kdesu +%{_mandir}/man1/kdesu.1.gz +%{_mandir}/*/man1/kdesu.1.gz +## FIXME: %%lang'ify +%{_datadir}/doc/HTML/*/kdesu + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-terminal/konsole-history_location_default.patch b/sonic-terminal/konsole-history_location_default.patch new file mode 100644 index 0000000..ec394fc --- /dev/null +++ b/sonic-terminal/konsole-history_location_default.patch @@ -0,0 +1,26 @@ +diff --git a/src/history/HistoryFile.cpp b/src/history/HistoryFile.cpp +index abd5a2287..28783c6b8 100644 +--- a/src/history/HistoryFile.cpp ++++ b/src/history/HistoryFile.cpp +@@ -53,7 +53,7 @@ HistoryFile::HistoryFile() + } + + KConfigGroup configGroup = appConfig->group(QStringLiteral("FileLocation")); +- if (configGroup.readEntry("scrollbackUseCacheLocation", false)) { ++ if (configGroup.readEntry("scrollbackUseCacheLocation", true)) { + fileLocation = QStandardPaths::writableLocation(QStandardPaths::CacheLocation); + } else if (configGroup.readEntry("scrollbackUseSpecifiedLocation", false)) { + const QUrl specifiedUrl = KonsoleSettings::scrollbackUseSpecifiedLocationDirectory(); +diff --git a/src/settings/konsole.kcfg b/src/settings/konsole.kcfg +index 00773635f..cc4358905 100644 +--- a/src/settings/konsole.kcfg ++++ b/src/settings/konsole.kcfg +@@ -187,7 +187,7 @@ + + + +- false ++ true + + + diff --git a/sonic-terminal/konsolerc b/sonic-terminal/konsolerc new file mode 100644 index 0000000..5f087ec --- /dev/null +++ b/sonic-terminal/konsolerc @@ -0,0 +1,6 @@ +[MainWindow] +MenuBar=Disabled + +[FileLocation] +scrollbackUseCacheLocation=true +scrollbackUseSystemLocation=false diff --git a/sonic-terminal/sonic-terminal.spec b/sonic-terminal/sonic-terminal.spec new file mode 100644 index 0000000..4608e37 --- /dev/null +++ b/sonic-terminal/sonic-terminal.spec @@ -0,0 +1,160 @@ +# Generated for SonicDE from Fedora's konsole.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-terminal fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-terminal +# Upstream KDE project: konsole +%global oldname konsole + +%if 0%{?rhel} && 0%{?rhel} >= 10 +# Tests require x11 +# x11 is not in RHEL 10 +%global tests 0 +%else +%global tests 1 +%endif + +#Name: konsole +Name: sonic-terminal +Summary: KDE Terminal emulator +Version: 26.04.3.1 +Release: 1%{?dist} + +License: CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.0-only AND LGPL-2.1-only AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://www.kde.org/applications/system/konsole/ +URL: https://github.com/Sonic-DE/%{reponame} +#Source0: https://download.kde.org/%%{stable_kf6}/release-service/%%{version}/src/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz + +## upstreamable patches + +## upstream patches + +## downstream patches +Patch200: konsole-history_location_default.patch +# custom konsolerc that sets default to cache as well +Source10: konsolerc + +BuildRequires: make +BuildRequires: desktop-file-utils +BuildRequires: gettext +BuildRequires: pkgconfig(zlib) + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(KF6Bookmarks) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6ConfigWidgets) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6Crash) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6DocTools) +BuildRequires: cmake(KF6GlobalAccel) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6NewStuff) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6NotifyConfig) +BuildRequires: cmake(KF6Parts) +BuildRequires: cmake(KF6Pty) +BuildRequires: cmake(KF6Service) +BuildRequires: cmake(KF6TextWidgets) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: cmake(KF6XmlGui) + +BuildRequires: libappstream-glib +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6DBus) +BuildRequires: cmake(Qt6Multimedia) +BuildRequires: cmake(Qt6PrintSupport) +BuildRequires: cmake(Qt6Widgets) +BuildRequires: cmake(Qt6Core5Compat) +BuildRequires: libicu-devel +BuildRequires: cmake(libssh) + +%if 0%{?tests} +BuildRequires: pkgconfig(x11) +BuildRequires: appstream +BuildRequires: xorg-x11-server-Xvfb dbus-x11 +%endif + +# translations moved here +Conflicts: kde-l10n < 17.03 + +Requires: %{name}-part%{?_isa} = %{version}-%{release} +Requires: keditbookmarks + +Obsoletes: konsole5 < 24.01.75 + +Provides: konsole = %{version}-%{release} +Conflicts: konsole < %{version}-%{release} + +%description +%{summary}. + +%package part +Summary: Konsole kpart plugin +Provides: konsole-part = %{version}-%{release} +Conflicts: konsole-part < %{version}-%{release} + +%description part +%{summary}. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 \ + %{?flatpak:-DINSTALL_ICONS:BOOL=ON} \ + %{?tests:-DBUILD_TESTING:BOOL=ON} + +%cmake_build + + +%install +%cmake_install + +install -m644 -p -D %{SOURCE10} %{buildroot}%{_kf6_sysconfdir}/xdg/konsolerc + +%find_lang konsole --with-html + +%check +appstream-util validate-relax --nonet %{buildroot}%{_kf6_metainfodir}/org.kde.konsole.appdata.xml +desktop-file-validate %{buildroot}%{_kf6_datadir}/applications/org.kde.konsole.desktop +%if 0%{?tests} +xvfb-run -a bash -c "%ctest" || : +%endif + + +%files -f konsole.lang +%doc README* +%{_kf6_bindir}/konsole +%{_kf6_bindir}/konsoleprofile +%{_kf6_datadir}/applications/org.kde.konsole.desktop +%{_kf6_datadir}/kglobalaccel/org.kde.konsole.desktop +%{_kf6_datadir}/kio/servicemenus/konsolerun.desktop +%{_kf6_datadir}/knotifications6/konsole.notifyrc +%{_kf6_datadir}/qlogging-categories6/konsole.* +%{_kf6_datadir}/zsh/site-functions/_konsole +%{_kf6_metainfodir}/org.kde.konsole.appdata.xml +%if 0%{?flatpak} +%{_kf6_datadir}/icons/hicolor/*/apps/utilities-terminal.* +%endif + + +%files part +%config(noreplace) %{_kf6_sysconfdir}/xdg/konsolerc +%{_kf6_libdir}/libkonsoleapp.so.* +%{_kf6_libdir}/libkonsoleprivate.so.* +%{_kf6_qtplugindir}/konsoleplugins/ +%{_kf6_qtplugindir}/kf6/parts/konsolepart.so + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 26.04.3.1-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-thunderbolt/sonic-thunderbolt.spec b/sonic-thunderbolt/sonic-thunderbolt.spec new file mode 100644 index 0000000..f2de9af --- /dev/null +++ b/sonic-thunderbolt/sonic-thunderbolt.spec @@ -0,0 +1,84 @@ +# Generated for SonicDE from Fedora's plasma-thunderbolt.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-thunderbolt fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-thunderbolt +# Upstream KDE project: plasma-thunderbolt +%global oldname plasma-thunderbolt + +%global base_name plasma-thunderbolt + + +# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} + +#Name: plasma-thunderbolt +Name: sonic-thunderbolt +Summary: Plasma integration for controlling Thunderbolt devices +Version: 6.7.4 +Release: 1%{?dist} + +License: BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) +#URL: https://invent.kde.org/plasma/%%{base_name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{base_name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{base_name}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6Declarative) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6KCMUtils) +BuildRequires: cmake(KF6Notifications) + +BuildRequires: cmake(Qt6DBus) +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6Quick) + +BuildRequires: desktop-file-utils + +Requires: bolt + +Provides: plasma-thunderbolt = %{version}-%{release} +Conflicts: plasma-thunderbolt < %{version}-%{release} + +%description +Plasma Sytem Settings module and a KDED module to handle authorization of +Thunderbolt devices connected to the computer. There's also a shared library +(libkbolt) that implements common interface between the modules and the +system-wide bolt daemon, which does the actual hard work of talking to the +kernel. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build + +%install +%cmake_install +%find_lang %{oldname} --all-name + +%check +desktop-file-validate %{buildroot}/%{_datadir}/applications/kcm_bolt.desktop + +%files -f %{name}.lang +%doc README.md +%license LICENSES/* +%{_kf6_libdir}/libkbolt.so +%{_kf6_qtplugindir}/plasma/kcms/systemsettings/kcm_bolt.so +%{_kf6_qtplugindir}/kf6/kded/kded_bolt.so +%{_kf6_datadir}/knotifications6/kded_bolt.notifyrc +%{_kf6_datadir}/applications/kcm_bolt.desktop + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-vault/sonic-vault.spec b/sonic-vault/sonic-vault.spec new file mode 100644 index 0000000..c5a0bbb --- /dev/null +++ b/sonic-vault/sonic-vault.spec @@ -0,0 +1,86 @@ +# Generated for SonicDE from Fedora's plasma-vault.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-vault fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-vault +# Upstream KDE project: plasma-vault +%global oldname plasma-vault + + +# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} + +#Name: plasma-vault +Name: sonic-vault +Summary: Plasma Vault offers strong encryption features in a user-friendly way +Version: 6.7.4 +Release: 1%{?dist} + +License: CC0-1.0 AND GPL-2.0-only AND GPL-3.0-only AND LGPL-2.1-only AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: http://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: http://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +# Upstream changes + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6ConfigWidgets) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: cmake(KF6NetworkManagerQt) +BuildRequires: cmake(KF6ItemModels) +BuildRequires: cmake(KSysGuard) +BuildRequires: cmake(KF6KirigamiPlatform) + +# Plasma + +BuildRequires: cmake(Plasma) +BuildRequires: cmake(PlasmaActivities) + +# Qt +BuildRequires: cmake(Qt6Quick) + +## Runtime backends +Recommends: cryfs +Recommends: fuse-encfs +Requires: gocryptfs + +Provides: plasma-vault = %{version}-%{release} +Conflicts: plasma-vault < %{version}-%{release} + +%description +Plasma Vault allows to lock and encrypt sets of documents and hide them from +prying eyes even when the user is logged in. + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%build +%cmake_kf6 +%cmake_build + + +%install +%cmake_install +%find_lang %{oldname} --all-name + +%files -f %{name}.lang +%license LICENSES/* +%{_kf6_plugindir}/kded/plasmavault.so +%dir %{_qt6_plugindir}/plasma/applets/ +%{_qt6_plugindir}/plasma/applets/org.kde.plasma.vault.so +%{_qt6_plugindir}/kf6/kfileitemaction/plasmavaultfileitemaction.so +%{_kf6_datadir}/plasma/plasmoids/org.kde.plasma.vault/ + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-welcome-center/sonic-welcome-center.spec b/sonic-welcome-center/sonic-welcome-center.spec new file mode 100644 index 0000000..1bb0950 --- /dev/null +++ b/sonic-welcome-center/sonic-welcome-center.spec @@ -0,0 +1,97 @@ +# Generated for SonicDE from Fedora's plasma-welcome.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-welcome-center fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-welcome-center +# Upstream KDE project: plasma-welcome +%global oldname plasma-welcome + +%global orgname org.kde.plasma-welcome + +#Name: plasma-welcome +Name: sonic-welcome-center +Version: 6.7.4.1 +Release: 1%{?dist} +License: GPL-2.0-or-later and BSD-3-Clause +Summary: Plasma Welcome +Url: https://invent.kde.org/plasma/%{name} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +# Upstream patches + +BuildRequires: gcc-c++ +BuildRequires: qt6-qtbase-devel +BuildRequires: desktop-file-utils +BuildRequires: libappstream-glib +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros + +BuildRequires: cmake(Qt6Core) +BuildRequires: cmake(Qt6Quick) +BuildRequires: cmake(Qt6Widgets) +BuildRequires: cmake(Qt6QuickControls2) +BuildRequires: cmake(Qt6Svg) + +BuildRequires: cmake(KF6Kirigami2) +BuildRequires: cmake(KF6KirigamiAddons) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6ConfigWidgets) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6NewStuff) +BuildRequires: cmake(KF6WindowSystem) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6Service) +BuildRequires: cmake(KF6KCMUtils) +BuildRequires: cmake(KF6Svg) +BuildRequires: cmake(KF6GlobalAccel) +BuildRequires: cmake(KF6Crash) + +BuildRequires: cmake(Plasma) + +Requires: sonic-frameworks-user-feedback + +Provides: plasma-welcome-app = %{version}-%{release} +Obsoletes: plasma-welcome-app < 5.27.0-2 + +Provides: plasma-welcome = %{version}-%{release} +Conflicts: plasma-welcome < %{version}-%{release} + +%description +A Friendly onboarding wizard for Plasma. + +%prep +%autosetup -p1 -n %{reponame}-%{version} +# It is for generate pot file for translate so we can ignore it. +rm Messages.sh + +%build +%cmake_kf6 +%cmake_build + +%install +%cmake_install +%find_lang %{oldname} --all-name --with-html +rm -fv %{buildroot}%{_kf6_libdir}/libplasma-welcome-publicplugin.a +%check +# commented out until upstream fixes duplicate entries +#appstream-util validate-relax --nonet %%{buildroot}%%{_kf6_metainfodir}/%%{orgname}.*.xml +desktop-file-validate %{buildroot}%{_kf6_datadir}/applications/%{orgname}.desktop + +%files -f %{name}.lang +%license LICENSES/{BSD-3-Clause.txt,GPL-2.0-or-later.txt,FSFAP.txt} +%doc README.md +%{_kf6_bindir}/plasma-welcome +%{_kf6_datadir}/applications/%{orgname}.desktop +%{_kf6_metainfodir}/%{orgname}.*.xml +%{_kf6_plugindir}/kded/kded_plasma_welcome.so +%{_kf6_qmldir}/org/kde/plasma/welcome/ +%{_kf6_datadir}/qlogging-categories6/welcome.categories + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4.1-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-win/sonic-win.spec b/sonic-win/sonic-win.spec index b98b452..6629b39 100644 --- a/sonic-win/sonic-win.spec +++ b/sonic-win/sonic-win.spec @@ -3,8 +3,8 @@ %define oldname kwin_x11 Name: sonic-win -Version: 6.6.4 -Release: 13%{?dist} +Version: 6.7.4.3 +Release: 1%{?dist} Summary: KDE Window manager License: BSD-2-Clause AND BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND GPL-3.0-or-later AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) AND MIT @@ -13,8 +13,8 @@ URL: https://github.com/Sonic-DE/%{name} %global plasma_version %(echo %{version} | cut -d. -f1-3) -#Source0: http://download.kde.org/%{stable_kf6}/plasma/%{maj_ver_kf6}.%{min_ver_kf6}.%{bug_ver_kf6}/%{name}-%{version}.tar.xz -#Source1: http://download.kde.org/%{stable_kf6}/plasma/%{maj_ver_kf6}.%{min_ver_kf6}.%{bug_ver_kf6}/%{name}-%{version}.tar.xz.sig +#Source0: http://download.kde.org/%%{stable_kf6}/plasma/%%{maj_ver_kf6}.%%{min_ver_kf6}.%%{bug_ver_kf6}/%%{name}-%%{version}.tar.xz +#Source1: http://download.kde.org/%%{stable_kf6}/plasma/%%{maj_ver_kf6}.%%{min_ver_kf6}.%%{bug_ver_kf6}/%%{name}-%%{version}.tar.xz.sig Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz ## upstream patches @@ -23,8 +23,8 @@ Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar. # Base -BuildRequires: extra-cmake-modules -BuildRequires: kf6-rpm-macros +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros BuildRequires: systemd-rpm-macros # Qt @@ -103,7 +103,7 @@ BuildRequires: cmake(KNightTime) BuildRequires: cmake(KDecoration3) BuildRequires: sonic-screenlocker-devel -BuildRequires: plasma-breeze-devel +BuildRequires: sonic-breeze-devel BuildRequires: plasma-wayland-protocols-devel BuildRequires: cmake(KGlobalAccelD) BuildRequires: libdisplay-info-devel @@ -120,8 +120,8 @@ BuildRequires: pkgconfig(libcanberra) Requires: %{name}-libs%{?_isa} = %{version}-%{release} Requires: %{name}-common%{?_isa} = %{version}-%{release} Requires: sonic-screenlocker%{?_isa} -Requires: kf6-kirigami2%{?_isa} -Requires: kf6-kdeclarative%{?_isa} +Requires: sonic-frameworks-quick-ui%{?_isa} +Requires: sonic-frameworks-qml-bridge%{?_isa} Requires: sonic-interface-libraries%{?_isa} >= %{plasma_version} Requires: qt6-qtmultimedia%{?_isa} Requires: qt6-qtdeclarative%{?_isa} @@ -137,18 +137,18 @@ Obsoletes: kwin-gles-libs < 5 # Split of X11 variant into subpackage Obsoletes: kwin < %{version}-%{release} -#Requires: kwin-wayland = %{version}-%{release} +#Requires: kwin-wayland = %%{version}-%%{release} # Merge -wayland subpackage Conflicts: kwin-wayland < 6.3.90 Obsoletes: kwin-wayland < 6.3.90 -#Provides: kwin-wayland = %{version}-%{release} -#Provides: kwin-wayland%{?_isa} = %{version}-%{release} +#Provides: kwin-wayland = %%{version}-%%{release} +#Provides: kwin-wayland%%{?_isa} = %%{version}-%%{release} # Obsolete kwin-wayland-nvidia package as this is now done automatically # by kwin-wayland Obsoletes: kwin-wayland-nvidia < 5.20.2-2 -#Provides: kwin-wayland-nvidia = %{version}-%{release} +#Provides: kwin-wayland-nvidia = %%{version}-%%{release} # Obsolete -x11 for Plasma 6 %if 0%{?fedora} Obsoletes: kwin-x11 < 5.92.0 @@ -157,7 +157,7 @@ Obsoletes: kwin-x11 < %{version}-%{release} Conflicts: kwin-x11 < %{version}-%{release} %endif %if ! 0%{?rhel} >= 10 -#Requires: (kwayland-integration%{?_isa} if kf5-kwindowsystem%{?_isa}) +#Requires: (kwayland-integration%%{?_isa} if kf5-kwindowsystem%%{?_isa}) %endif %if ! 0%{?bootstrap} #BuildRequires: xorg-x11-server-Xwayland @@ -203,8 +203,8 @@ Conflicts: kwin-x11-libs Summary: Development files for %{name} Requires: %{name}-libs%{?_isa} = %{version}-%{release} Requires: %{name}-common%{?_isa} = %{version}-%{release} -Requires: kf6-kconfig-devel -Requires: kf6-kservice-devel +Requires: sonic-frameworks-settings-devel +Requires: sonic-frameworks-app-info-devel Requires: sonic-frameworks-windowsystem Conflicts: kde-workspace-devel < 5.0.0-1 Conflicts: kwin-devel @@ -241,12 +241,12 @@ cat %{name}.lang %{name}-doc.lang | sort | uniq -u > kwin6.lang mkdir -p %{buildroot}%{_sysconfdir}/xdg/Xwayland-session.d # temporary(?) hack to allow initial-setup to use /usr/bin/kwin too -#ln -sr %{buildroot}%{_kf6_bindir}/kwin_wayland %{buildroot}%{_bindir}/kwin +#ln -sr %%{buildroot}%%{_kf6_bindir}/kwin_wayland %%{buildroot}%%{_bindir}/kwin %files %{_bindir}/kwin_x11 -#%{_bindir}/kwin_wayland_wrapper +#%%{_bindir}/kwin_wayland_wrapper %{_datadir}/kwin-x11/ %caps(cap_sys_nice=ep) %{_kf6_bindir}/kwin_x11 %{_userunitdir}/plasma-kwin_x11.service @@ -266,18 +266,18 @@ mkdir -p %{buildroot}%{_sysconfdir}/xdg/Xwayland-session.d %{_kf6_libdir}/kconf_update_bin/kwin-6.5-showpaint-changes-x11 %{_libexecdir}/kwin-applywindowdecoration-x11 %{_libexecdir}/kwin_killer_helper_x11 -#%{_libexecdir}/kwin-tabbox-preview +#%%{_libexecdir}/kwin-tabbox-preview %{_datadir}/kconf_update/kwin-x11.upd %{_kf6_datadir}/knotifications6/kwin-x11.notifyrc -#%{_kf6_datadir}/config.kcfg/kwin.kcfg -#%{_kf6_datadir}/config.kcfg/kwindecorationsettings.kcfg -#%{_kf6_datadir}/config.kcfg/virtualdesktopssettings.kcfg -#%{_kf6_datadir}/config.kcfg/nightlightsettings.kcfg +#%%{_kf6_datadir}/config.kcfg/kwin.kcfg +#%%{_kf6_datadir}/config.kcfg/kwindecorationsettings.kcfg +#%%{_kf6_datadir}/config.kcfg/virtualdesktopssettings.kcfg +#%%{_kf6_datadir}/config.kcfg/nightlightsettings.kcfg %{_datadir}/icons/hicolor/*/apps/kwin-x11.* %{_datadir}/knsrcfiles/*.knsrc %{_datadir}/krunner/dbusplugins/kwin-runner-windows-x11.desktop %{_datadir}/applications/*.desktop -#%{_bindir}/kwindowprop +#%%{_bindir}/kwindowprop %files libs %{_kf6_datadir}/qlogging-categories6/org_kde_kwin_x11.categories @@ -286,7 +286,7 @@ mkdir -p %{buildroot}%{_sysconfdir}/xdg/Xwayland-session.d %files devel %{_datadir}/dbus-1/interfaces/*.xml -#%{_libdir}/cmake/KWinDBusInterface +#%%{_libdir}/cmake/KWinDBusInterface %{_libdir}/cmake/KWinX11 %{_libdir}/cmake/KWinX11DBusInterface %{_includedir}/kwin-x11 @@ -297,6 +297,9 @@ mkdir -p %{buildroot}%{_sysconfdir}/xdg/Xwayland-session.d %changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4.3-1 +- Update to SonicDE 6.7.4.3 from the hard fork; build on Enterprise Linux 10 and Fedora + * Sun Apr 12 2026 Steve Cossette - 6.6.4-2 - Added evdev as BR for controller support (#22) diff --git a/sonic-workspace-addons/sonic-workspace-addons.spec b/sonic-workspace-addons/sonic-workspace-addons.spec new file mode 100644 index 0000000..1fb566c --- /dev/null +++ b/sonic-workspace-addons/sonic-workspace-addons.spec @@ -0,0 +1,216 @@ +# Generated for SonicDE from Fedora's kdeplasma-addons.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-workspace-addons fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-workspace-addons +# Upstream KDE project: kdeplasma-addons +%global oldname kdeplasma-addons + +#Name: kdeplasma-addons +Name: sonic-workspace-addons +Summary: Additional Plasmoids for Plasma 6 +Version: 6.7.4 +Release: 1%{?dist} + +%global source_licenses %{shrink: + BSD-3-Clause AND + CC0-1.0 AND + GPL-2.0-only AND + GPL-2.0-or-later AND + GPL-3.0-only AND + GPL-3.0-or-later AND + LGPL-2.0-only AND + LGPL-2.0-or-later AND + LGPL-2.1-only AND + LGPL-2.1-or-later AND + LGPL-3.0-only AND + LGPL-3.0-or-later AND + (GPL-2.0-only OR GPL-3.0-only) AND + (LGPL-2.1-only OR LGPL-3.0-only) AND + MIT + } +License: %{source_licenses} +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: http://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: http://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + + +ExcludeArch: %{ix86} + +%ifarch %{qt6_qtwebengine_arches} +BuildRequires: cmake(Qt6WebEngineQuick) +%endif + +## upstream patches + +Obsoletes: kdeplasma-addons-libs < 5.0.0 + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: cmake(KF6KCMUtils) +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6ConfigWidgets) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: cmake(KF6Holidays) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6NewStuff) +BuildRequires: cmake(KF6Runner) +BuildRequires: cmake(KF6Service) +BuildRequires: cmake(KF6GlobalAccel) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6Sonnet) +BuildRequires: cmake(KF6UnitConversion) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: cmake(KF6Svg) +BuildRequires: cmake(KF6KirigamiPlatform) +BuildRequires: cmake(Plasma5Support) +BuildRequires: sonic-rpm-macros >= 5.25.0-2 +BuildRequires: libicu-devel +BuildRequires: libxcb-devel +BuildRequires: cmake(Qt6Quick3D) +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtdeclarative-devel +BuildRequires: cmake(Qt6Core5Compat) +BuildRequires: xcb-util-image-devel +BuildRequires: xcb-util-keysyms-devel +BuildRequires: cmake(KF6Declarative) +BuildRequires: sonic-workspace-devel +BuildRequires: sonic-sysguard-library-devel +BuildRequires: cmake(KF6XmlGui) + +BuildRequires: cmake(Plasma) +BuildRequires: cmake(PlasmaActivities) + +# The SonicDE fork implements the QMK VIA helper in C++ on top of SonicVia +# instead of the Rust qmk-via-api crate. +BuildRequires: cmake(SonicVia) +BuildRequires: pkgconfig(polkit-qt6-core-1) + +# for notes.svgz +Requires: kf6-plasma + +# Quickshare applet runtime dep +BuildRequires: cmake(KF6Purpose) +Recommends: sonic-frameworks-purpose%{?_isa} + +# Cube effect +Requires: qt6-qtquick3d%{?_isa} + +Requires: sonic-frameworks-data-models%{?_isa} +Requires: sonic-frameworks-quick-ui-addons%{?_isa} + +Provides: kdeplasma-addons = %{version}-%{release} +Conflicts: kdeplasma-addons < %{version}-%{release} + +%description +%{summary}. + +%package -n kate-krunner-plugin +Summary: KRunner plugin for searching Kate sessions +License: %{source_licenses} +Requires: kate +Supplements: kate +# Before the split +Conflicts: sonic-workspace-addons < 5.92.0-3 +%description -n kate-krunner-plugin +%{summary}. + +%package devel +Summary: Development files for %{name} +License: %{source_licenses} +# headers only: fixme: confirm need for dep on main pkg? -- rdieter +Requires: %{name} = %{version}-%{release} +#find_dependency(Qt5Gui "5.12.0") +#find_dependency(KF5CoreAddons "5.58.0") +Requires: cmake(Qt6Gui) +Requires: cmake(KF6CoreAddons) +Provides: kdeplasma-addons-devel = %{version}-%{release} +Conflicts: kdeplasma-addons-devel < %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +%prep +%autosetup -p1 -n %{reponame}-%{version} + +%conf +%cmake_kf6 + +%build +%cmake_build + +%install +%cmake_install +%find_lang kdeplasmaaddons5_qt --with-qt --all-name + +%files -f kdeplasmaaddons5_qt.lang +%license LICENSES/*.txt +%{_kf6_datadir}/kwin/effects/cube/ +%{_kf6_datadir}/plasma/plasmoids/* +%{_kf6_datadir}/plasma/desktoptheme/default/widgets/* +%{_kf6_datadir}/plasma/desktoptheme/default/weather/ +%{_kf6_datadir}/plasma/wallpapers/* +%{_kf6_datadir}/qlogging-categories6/kdeplasma-addons.categories +%{_kf6_datadir}/qlogging-categories6/kdeplasma-addons.renamecategories +%{_kf6_qtplugindir}/plasma/applets/*.so +%{_kf6_plugindir}/krunner/kcms/kcm_krunner_charrunner.so +%{_kf6_plugindir}/krunner/kcms/kcm_krunner_dictionary.so +%{_kf6_plugindir}/krunner/kcms/kcm_krunner_spellcheck.so +%{_kf6_plugindir}/krunner/krunner_charrunner.so +%{_kf6_plugindir}/krunner/krunner_dictionary.so +%{_kf6_plugindir}/krunner/krunner_konsoleprofiles.so +%{_kf6_plugindir}/krunner/krunner_spellcheck.so +%{_kf6_plugindir}/krunner/org.kde.datetime.so +%{_kf6_plugindir}/krunner/unitconverter.so +%{_kf6_plugindir}/packagestructure/*.so +%{_kf6_qtplugindir}/plasmacalendarplugins/ +%{_kf6_qtplugindir}/kwin/effects/configs/kwin_cube_config.so +%{_kf6_qtplugindir}/potd/ +%{_kf6_qmldir}/org/kde/plasma/* +%{_kf6_datadir}/knotifications6/plasma_applet_timer.notifyrc +%{_datadir}/kwin/tabbox/ +%{_datadir}/icons/hicolor/scalable/apps/accessories-dictionary.svgz +%{_datadir}/knsrcfiles/comic.knsrc +%{_kf6_libdir}/libplasmapotdprovidercore.so.* +%{_libdir}/qt6/qml/org/kde/plasmacalendar/astronomicaleventsconfig/* +%{_kf6_plugindir}/kded/kameleon.so +%{_kf6_plugindir}/krunner/krunner_colors.so +%{_kf6_libexecdir}/kauth/kameleonhelper +%{_kf6_datadir}/dbus-1/system-services/org.kde.kameleonhelper.service +%{_kf6_datadir}/dbus-1/system.d/org.kde.kameleonhelper.conf +%{_kf6_datadir}/polkit-1/actions/org.kde.kameleonhelper.policy +%{_libdir}/libplasmaweatherdata.so.* +%{_libdir}/libplasmaweatherion.so.* +%{_kf6_qtplugindir}/plasma/weather_ions/bbcukmet.so +%{_kf6_qtplugindir}/plasma/weather_ions/dwd.so +%{_kf6_qtplugindir}/plasma/weather_ions/envcan.so +%{_kf6_qtplugindir}/plasma/weather_ions/noaa.so +%{_kf6_qtplugindir}/plasma/weather_ions/wettercom.so +%{_datadir}/plasma/weather/noaa_station_list.xml +%{_datadir}/kwin/scripts/virtualdesktopsonlyonprimary/ +%{_kf6_libexecdir}/kameleon-qmk-helper +%{_kf6_datadir}/dbus-1/system.d/org.kde.kameleon.qmk.helper.conf +%{_kf6_datadir}/polkit-1/actions/org.kde.kameleon.qmk.helper.policy + +%files -n kate-krunner-plugin +%{_kf6_plugindir}/krunner/krunner_katesessions.so + +%files devel +%{_libdir}/libplasmaweatherdata.so +%{_libdir}/libplasmaweatherion.so +%{_libdir}/cmake/PlasmaPotdProvider/ +%{_includedir}/plasma/potdprovider/ +%{_kf6_datadir}/kdevappwizard/templates/plasmapotdprovider.tar.bz2 +%{_kf6_libdir}/libplasmapotdprovidercore.so +%{_includedir}/plasma/weather/ +%{_libdir}/cmake/PlasmaWeather/ + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-workspace-wallpapers/sonic-workspace-wallpapers.spec b/sonic-workspace-wallpapers/sonic-workspace-wallpapers.spec new file mode 100644 index 0000000..c26f4ed --- /dev/null +++ b/sonic-workspace-wallpapers/sonic-workspace-wallpapers.spec @@ -0,0 +1,104 @@ +# Generated for SonicDE from Fedora's plasma-workspace-wallpapers.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-workspace-wallpapers fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-workspace-wallpapers +# Upstream KDE project: plasma-workspace-wallpapers +%global oldname plasma-workspace-wallpapers + + +# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} + +#Name: plasma-workspace-wallpapers +Name: sonic-workspace-wallpapers +Version: 6.7.4.1 +Release: 1%{?dist} +Summary: Additional wallpapers for Plasma workspace +# Automatically converted from old format: LGPLv3 - review is highly recommended. +License: LGPL-3.0-only +#URL: https://cgit.kde.org/%%{name}.git +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig +BuildArch: noarch + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: qt6-qtbase-devel + +Requires: kde-filesystem + +# Elarun moved here +Conflicts: kde-wallpapers < 15.08.3-10 + +# when we went noarch +Obsoletes: sonic-workspace-wallpapers < 5.2.0-2 + + +Provides: plasma-workspace-wallpapers = %{version}-%{release} +Conflicts: plasma-workspace-wallpapers < %{version}-%{release} + +%description +%{summary}. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 -DBUILD_WITH_QT6=ON +%cmake_build + + +%install +%cmake_install + + +%files +%license COPYING.LGPL3 +%{_datadir}/wallpapers/Altai/ +%{_datadir}/wallpapers/Autumn/ +%{_datadir}/wallpapers/BytheWater/ +%{_datadir}/wallpapers/Canopee/ +%{_datadir}/wallpapers/Cascade/ +%{_datadir}/wallpapers/Cluster/ +%{_datadir}/wallpapers/ColdRipple/ +%{_datadir}/wallpapers/ColorfulCups/ +%{_datadir}/wallpapers/DarkestHour/ +%{_datadir}/wallpapers/Elarun/ +%{_datadir}/wallpapers/EveningGlow/ +%{_datadir}/wallpapers/FallenLeaf/ +%{_datadir}/wallpapers/FlyingKonqui/ +%{_datadir}/wallpapers/Flow/ +%{_datadir}/wallpapers/Grey/ +%{_datadir}/wallpapers/Honeywave/ +%{_datadir}/wallpapers/IceCold/ +%{_datadir}/wallpapers/Kay/ +%{_datadir}/wallpapers/Kite/ +%{_datadir}/wallpapers/Kokkini/ +%{_datadir}/wallpapers/MilkyWay/ +%{_datadir}/wallpapers/Mountain/ +%{_datadir}/wallpapers/Nexus/ +%{_datadir}/wallpapers/Nuvole/ +%{_datadir}/wallpapers/OneStandsOut/ +%{_datadir}/wallpapers/Opal/ +%{_datadir}/wallpapers/PastelHills/ +%{_datadir}/wallpapers/Patak/ +%{_datadir}/wallpapers/Path/ +%{_datadir}/wallpapers/SafeLanding/ +%{_datadir}/wallpapers/ScarletTree/ +%{_datadir}/wallpapers/Shell/ +%{_datadir}/wallpapers/summer_1am/ +%{_datadir}/wallpapers/Volna/ +%{_datadir}/wallpapers/Coast/ +%{_datadir}/wallpapers/Orionids/ +%{_datadir}/wallpapers/Sub-Arctic/ + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4.1-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/sonic-workspace/sonic-workspace.spec b/sonic-workspace/sonic-workspace.spec index d3704f9..2bb3fb6 100644 --- a/sonic-workspace/sonic-workspace.spec +++ b/sonic-workspace/sonic-workspace.spec @@ -6,16 +6,16 @@ Name: sonic-workspace Summary: Plasma workspace, applications and applets -Version: 6.6.4 -Release: 16%{?dist} +Version: 6.7.4.6 +Release: 1%{?dist} # Automatically converted from old format: BSD-2-Clause AND BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only AND LGPL-3.0-or-later AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) AND MIT - review is highly recommended. License: BSD-2-Clause AND BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-only AND LGPL-2.0-only AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-2.1-or-later AND LGPL-3.0-only AND LGPL-3.0-or-later AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) AND MIT -#URL: https://invent.kde.org/plasma/%{name} +#URL: https://invent.kde.org/plasma/%%{name} URL: https://github.com/Sonic-DE/%{name} -#Source0: https://download.kde.org/%{stable_kf6}/plasma/%{maj_ver_kf6}.%{min_ver_kf6}.%{bug_ver_kf6}/%{name}-%{version}.tar.xz -#Source1: https://download.kde.org/%{stable_kf6}/plasma/%{maj_ver_kf6}.%{min_ver_kf6}.%{bug_ver_kf6}/%{name}-%{version}.tar.xz.sig +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{maj_ver_kf6}.%%{min_ver_kf6}.%%{bug_ver_kf6}/%%{name}-%%{version}.tar.xz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{maj_ver_kf6}.%%{min_ver_kf6}.%%{bug_ver_kf6}/%%{name}-%%{version}.tar.xz.sig Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{name}-%{version}.tar.gz Source11: startkderc @@ -99,12 +99,12 @@ BuildRequires: cmake(Qt6Positioning) BuildRequires: cmake(Qt6ShaderTools) BuildRequires: polkit-qt6-1-devel BuildRequires: libcanberra-devel -BuildRequires: kf6-rpm-macros +BuildRequires: sonic-rpm-macros BuildRequires: systemd-rpm-macros BuildRequires: pkgconfig(libudev) BuildRequires: systemd -BuildRequires: extra-cmake-modules +BuildRequires: sonic-frameworks-cmake-modules BuildRequires: cmake(KF6Baloo) BuildRequires: cmake(KF6Archive) BuildRequires: cmake(KF6KCMUtils) @@ -167,7 +167,7 @@ BuildRequires: pkgconfig(libxcrypt) BuildRequires: wayland-protocols-devel BuildRequires: plasma-wayland-protocols-devel -BuildRequires: plasma-breeze-devel >= %{majmin_ver_kf6} +BuildRequires: sonic-breeze-devel >= %{majmin_ver_kf6} BuildRequires: chrpath BuildRequires: desktop-file-utils @@ -177,40 +177,40 @@ BuildRequires: cmake(AppStreamQt) >= 1.0.0 # when kded_desktopnotifier.so moved here Conflicts: kio-extras < 5.4.0 -Recommends: plasma-welcome +Recommends: sonic-welcome-center Recommends: %{name}-geolocation = %{version}-%{release} Suggests: imsettings-qt Requires: %{name}-common = %{version}-%{release} Requires: %{name}-libs%{?_isa} = %{version}-%{release} -Requires: libkworkspace6%{?_isa} = %{version}-%{release} +Requires: sonic-workspace-libs%{?_isa} = %{version}-%{release} # for selinux settings Requires: (policycoreutils if selinux-policy) Requires: kactivitymanagerd%{?_isa} Requires: ksystemstats%{?_isa} -Requires: kf6-baloo -Requires: kf6-kded -Requires: kf6-kdoctools +Requires: sonic-frameworks-file-search +Requires: sonic-daemon +Requires: sonic-frameworks-doctools Requires: sonic-frameworks-keybind -Requires: kf6-kquickcharts -Requires: kf6-kirigami -Requires: kf6-kirigami-addons -BuildRequires: kf6-kirigami-addons +Requires: sonic-frameworks-quick-charts +Requires: sonic-frameworks-quick-ui +Requires: sonic-frameworks-quick-ui-addons +BuildRequires: sonic-frameworks-quick-ui-addons Requires: kio-extras BuildRequires: kio-extras Requires: kio-fuse BuildRequires: kio-fuse # The new volume control for PulseAudio -Recommends: plasma-pa +Recommends: sonic-audio-applet-pulse # Without the platformtheme plugins we get broken fonts -Requires: kf6-frameworkintegration +Requires: sonic-frameworks-qt-integration # For krunner -Recommends: plasma-milou +Recommends: sonic-file-search-ui # https://pagure.io/fedora-kde/SIG/issue/303 Recommends: kde-inotify-survey @@ -349,7 +349,7 @@ Obsoletes: plasma-workspace-libs < %{version}-%{release} %package devel Summary: Development files for %{name} Requires: %{name}-libs%{?_isa} = %{version}-%{release} -Requires: libkworkspace6%{?_isa} = %{version}-%{release} +Requires: sonic-workspace-libs%{?_isa} = %{version}-%{release} Provides: plasma-workspace-devel = %{version}-%{release} Provides: plasma-workspace-devel%{?_isa} = %{version}-%{release} %description devel @@ -377,7 +377,7 @@ Documentation and user manuals for %{name}. # #Requires: plasma-keyboard #Supplements: (sddm and plasma-workspace) -#%if ! (0%{?fedora} && 0%{?fedora} < 38) +#%if ! (0%%{?fedora} && 0%%{?fedora} < 38) ## Replace sddm-x11 with sddm-wayland-plasma ### N.B.: If sddm gets updated in F36/F37, this will need to be bumped #Obsoletes: sddm-x11 < 0.19.0^git20230404.e652433-2 @@ -390,7 +390,7 @@ Documentation and user manuals for %{name}. %package x11 Summary: SonicDE X11 session -#Requires: %{name}%{?_isa} = %{version}-%{release} +#Requires: %%{name}%%{?_isa} = %%{version}-%%{release} Requires: xlibre-xserver-Xorg Conflicts: plasma-workspace-x11 @@ -449,17 +449,17 @@ EOL %install %cmake_install -#chrpath --delete %{buildroot}%{_kf6_qtplugindir}/phonon_platform/kde.so +#chrpath --delete %%{buildroot}%%{_kf6_qtplugindir}/phonon_platform/kde.so ## General startplasma symlink -#ln -sr %{buildroot}%{_kf6_bindir}/startplasma-wayland %{buildroot}%{_kf6_bindir}/startplasma +#ln -sr %%{buildroot}%%{_kf6_bindir}/startplasma-wayland %%{buildroot}%%{_kf6_bindir}/startplasma ## Drop (Wayland) qualifier from plasma.desktop -#sed -E 's| \(.*\)||g' -i %{buildroot}%{_datadir}/wayland-sessions/plasma.desktop +#sed -E 's| \(.*\)||g' -i %%{buildroot}%%{_datadir}/wayland-sessions/plasma.desktop # move sddm configuration snippet to the right place -#mkdir -p %{buildroot}%{_prefix}/lib/sddm -#mv %{buildroot}%{_sysconfdir}/sddm.conf.d %{buildroot}%{_prefix}/lib/sddm +#mkdir -p %%{buildroot}%%{_prefix}/lib/sddm +#mv %%{buildroot}%%{_sysconfdir}/sddm.conf.d %%{buildroot}%%{_prefix}/lib/sddm ## customize plasma-lookandfeel-fedora defaults # from [Wallpaper] Image=Next to Image=Fedora @@ -584,7 +584,7 @@ fi %{_userunitdir}/plasma-core.target.d/spice-vdagent.conf %endif %{_userunitdir}/plasma-workspace.target -#%{_userunitdir}/plasma-workspace-wayland.target +#%%{_userunitdir}/plasma-workspace-wayland.target %{_userunitdir}/plasma-workspace-x11.target %dir %{_userunitdir}/plasma-workspace@.target.d/ %{_libdir}/kconf_update_bin/plasma6.3-update-clipboard-database-2-to-3 @@ -598,8 +598,8 @@ fi %config(noreplace) %{_sysconfdir}/pam.d/kde-fingerprint %config(noreplace) %{_sysconfdir}/pam.d/kde-smartcard ## Plasma Wayland -#%{_kf6_bindir}/startplasma -#%{_kf6_bindir}/startplasma-wayland +#%%{_kf6_bindir}/startplasma +#%%{_kf6_bindir}/startplasma-wayland %{_datadir}/wayland-sessions/plasma.desktop %files doc -f %{name}-doc.lang @@ -678,7 +678,7 @@ fi %{_libdir}/libklookandfeel.so #%files -n sddm-wayland-plasma -#%{_prefix}/lib/sddm/sddm.conf.d/plasma-wayland.conf +#%%{_prefix}/lib/sddm/sddm.conf.d/plasma-wayland.conf %files x11 %defattr(-,root,root,-) @@ -690,6 +690,9 @@ fi %changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4.6-1 +- Update to SonicDE 6.7.4.6 from the hard fork; build on Enterprise Linux 10 and Fedora + * Fri Apr 10 2026 Steve Cossette - 6.6.4-1 - 6.6.4 diff --git a/sonic-write-daemon/sonic-write-daemon.spec b/sonic-write-daemon/sonic-write-daemon.spec new file mode 100644 index 0000000..5a6faee --- /dev/null +++ b/sonic-write-daemon/sonic-write-daemon.spec @@ -0,0 +1,64 @@ +# Generated for SonicDE from Fedora's kwrited.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/sonic-write-daemon fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame sonic-write-daemon +# Upstream KDE project: kwrited +%global oldname kwrited + +#Name: kwrited +Name: sonic-write-daemon +Summary: KDE Write Daemon +Version: 6.7.4 +Release: 1%{?dist} + +License: CC0-1.0 AND GPL-2.0-or-later +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: cmake(KF6Pty) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6DBusAddons) +BuildRequires: qt6-qtbase-devel +BuildRequires: git-core + +# Owns /usr/share/knotifications5 +Requires: sonic-frameworks-notifications + +# TODO: Remove once kwrited is split from kde-workspace +Conflicts: kde-workspace < 5.0.0-1 + +Provides: kwrited = %{version}-%{release} +Conflicts: kwrited < %{version}-%{release} + +%description +%{summary}. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 +%cmake_build + +%install +%cmake_install + +%files +%license LICENSES/* +%{_qt6_plugindir}/kf6/kded/kwrited.so +%{_kf6_datadir}/knotifications6/kwrited.notifyrc + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora diff --git a/xdg-desktop-portal-sonicde/xdg-desktop-portal-sonicde.spec b/xdg-desktop-portal-sonicde/xdg-desktop-portal-sonicde.spec new file mode 100644 index 0000000..978f28f --- /dev/null +++ b/xdg-desktop-portal-sonicde/xdg-desktop-portal-sonicde.spec @@ -0,0 +1,101 @@ +# Generated for SonicDE from Fedora's xdg-desktop-portal-kde.spec. +# SonicDE is a hard fork of KDE Plasma; the sources come from the +# https://github.com/Sonic-DE/xdg-desktop-portal-sonicde fork, not from download.kde.org. +%define _disable_source_fetch 0 +%define debug_package %{nil} +%global reponame xdg-desktop-portal-sonicde +# Upstream KDE project: xdg-desktop-portal-kde +%global oldname xdg-desktop-portal-kde + +#Name: xdg-desktop-portal-kde +Name: xdg-desktop-portal-sonicde +Summary: Backend implementation for xdg-desktop-portal using Qt/KF5 +Version: 6.7.4 +Release: 1%{?dist} + +License: BSD-2-Clause AND CC0-1.0 AND GPL-2.0-or-later AND LGPL-2.0-or-later AND LGPL-2.1-only AND LGPL-3.0-only AND (LGPL-2.1-only OR LGPL-3.0-only) +#URL: https://invent.kde.org/plasma/%%{name} +URL: https://github.com/Sonic-DE/%{reponame} + +#Source0: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz +Source0: %{url}/archive/refs/tags/%{version}.tar.gz#/%{reponame}-%{version}.tar.gz +#Source1: https://download.kde.org/%%{stable_kf6}/plasma/%%{version}/%%{name}-%%{version}.tar.xz.sig + +BuildRequires: sonic-frameworks-cmake-modules +BuildRequires: sonic-rpm-macros +BuildRequires: systemd-rpm-macros + +BuildRequires: qt6-qtbase-devel +# libQt6Gui.so.6(Qt_6.6_PRIVATE_API)(64bit) +# libQt6PrintSupport.so.6(Qt_6.6_PRIVATE_API)(64bit) +BuildRequires: qt6-qtbase-private-devel +BuildRequires: qt6-qtbase-static +BuildRequires: qt6-qtdeclarative-devel +BuildRequires: qt6-qtquickcontrols2-devel +BuildRequires: qt6-qtwayland-devel +BuildRequires: cmake(Qt6WaylandClient) + +BuildRequires: plasma-wayland-protocols-devel +BuildRequires: wayland-protocols-devel +BuildRequires: wayland-devel + +BuildRequires: cmake(KF6Config) +BuildRequires: cmake(KF6CoreAddons) +BuildRequires: cmake(KF6Crash) +BuildRequires: cmake(KF6Declarative) +BuildRequires: cmake(KF6GlobalAccel) +BuildRequires: cmake(KF6GuiAddons) +BuildRequires: cmake(KF6I18n) +BuildRequires: cmake(KF6IconThemes) +BuildRequires: cmake(KF6KIO) +BuildRequires: cmake(KF6Kirigami2) +BuildRequires: cmake(KF6Notifications) +BuildRequires: cmake(KF6StatusNotifierItem) +BuildRequires: cmake(KF6WidgetsAddons) +BuildRequires: cmake(KF6WindowSystem) + +# Plasma +BuildRequires: cmake(KWayland) + +Requires: xdg-desktop-portal +# See https://bugzilla.redhat.com/show_bug.cgi?id=2240211 +Requires: xdg-desktop-portal-gtk +Supplements: sonic-desktop-interface + +Provides: xdg-desktop-portal-kde = %{version}-%{release} +Conflicts: xdg-desktop-portal-kde < %{version}-%{release} + +%description +A backend implementation for xdg-desktop-portal that is using Qt/KF5 and various +pieces of KDE infrastructure. + + +%prep +%autosetup -p1 -n %{reponame}-%{version} + + +%build +%cmake_kf6 + +%cmake_build + + +%install +%cmake_install + +%find_lang xdg-desktop-portal-kde + + +%files -f xdg-desktop-portal-kde.lang +%license LICENSES/* +%{_libexecdir}/xdg-desktop-portal-kde +%{_datadir}/dbus-1/services/org.freedesktop.impl.portal.desktop.kde.service +%{_datadir}/xdg-desktop-portal/portals/kde.portal +%{_datadir}/applications/org.freedesktop.impl.portal.desktop.kde.desktop +%{_datadir}/knotifications6/xdg-desktop-portal-kde.notifyrc +%{_datadir}/qlogging-categories6/xdp-kde.categories +%{_userunitdir}/plasma-xdg-desktop-portal-kde.service + +%changelog +* Mon Aug 24 2026 Anders da Silva Rytter Hansen - 6.7.4-1 +- SonicDE hard fork build for Enterprise Linux 10 and Fedora