diff --git a/.github/workflows/build-fedora-rpms.yml b/.github/workflows/build-fedora-rpms.yml deleted file mode 100644 index 53aef70..0000000 --- a/.github/workflows/build-fedora-rpms.yml +++ /dev/null @@ -1,362 +0,0 @@ -name: Build Fedora RPMs - -on: - workflow_dispatch: - inputs: - package_kind: - description: "Interpret package_input as source or binary package names" - required: true - default: "source" - type: choice - options: - - source - - binary - package_input: - description: "Comma, space, or newline separated package list. Leave blank to use the full manifest." - required: false - default: "" - type: string - source_manifest: - description: "Checked-in source manifest path" - required: true - default: "manifests/fedora-43/source-packages.txt" - type: string - source_map: - description: "Checked-in binary to source map path" - required: true - default: "manifests/fedora-43/source-map.tsv" - type: string - fedora_branch: - description: "Fedora dist-git branch" - required: true - default: "f43" - type: string - fedora_release: - description: "Fedora container release" - required: true - default: "43" - type: string - builder_image: - description: "Prebuilt Fedora RPM builder image reference" - required: true - default: "ghcr.io/dawsonc/kde-x86_64-v4-fedora-builder:f43" - type: string - optimization_level: - description: "Compiler optimization level" - required: true - default: "-O3" - type: choice - options: - - -O2 - - -O3 - target_march: - description: "Target march override" - required: true - default: "x86-64-v4" - type: string -permissions: - contents: read - -jobs: - prepare: - runs-on: ubuntu-latest - outputs: - matrix: ${{ steps.select.outputs.matrix }} - package_count: ${{ steps.select.outputs.package_count }} - shard_count: ${{ steps.select.outputs.shard_count }} - steps: - - uses: actions/checkout@v4 - - - id: select - env: - PACKAGE_KIND: ${{ inputs.package_kind }} - PACKAGE_INPUT: ${{ inputs.package_input }} - SOURCE_MANIFEST: ${{ inputs.source_manifest }} - SOURCE_MAP: ${{ inputs.source_map }} - run: | - python3 <<'PY' - import json - import os - import re - from pathlib import Path - - source_manifest = Path(os.environ["SOURCE_MANIFEST"]) - source_map_path = Path(os.environ["SOURCE_MAP"]) - requested_source_map_path = source_map_path - package_kind = os.environ["PACKAGE_KIND"].strip() - package_input = os.environ["PACKAGE_INPUT"] - if not source_manifest.exists(): - raise SystemExit(f"Source manifest not found: {source_manifest}") - if not source_map_path.exists() and source_map_path.name == "binary-map.tsv": - compatibility_path = source_map_path.with_name("source-map.tsv") - if compatibility_path.exists(): - source_map_path = compatibility_path - if not source_map_path.exists(): - raise SystemExit( - f"Source map not found: {requested_source_map_path}. " - f"Expected an existing TSV such as {requested_source_map_path.with_name('source-map.tsv')}" - ) - source_packages = [ - line.strip() - for line in source_manifest.read_text(encoding="ascii").splitlines() - if line.strip() - ] - - binary_to_source = {} - for line in source_map_path.read_text(encoding="ascii").splitlines(): - if not line.strip(): - continue - binary_name, source_name = line.split("\t", 1) - binary_to_source[binary_name] = source_name - - def tokenize(raw: str): - parts = re.split(r"[\s,]+", raw.strip()) - return [part for part in parts if part] - - if package_input.strip(): - selected = tokenize(package_input) - else: - selected = source_packages - - if package_kind == "binary": - mapped = [] - missing = [] - for binary_name in selected: - source_name = binary_to_source.get(binary_name) - if source_name is None: - missing.append(binary_name) - else: - mapped.append(source_name) - if missing: - raise SystemExit( - "Missing binary-to-source mappings for: " + ", ".join(sorted(missing)) - ) - selected = mapped - - deduped = [] - seen = set() - for package_name in selected: - if package_name not in seen: - seen.add(package_name) - deduped.append(package_name) - - max_matrix = 256 - if not deduped: - matrix = [] - else: - shard_size = max(1, -(-len(deduped) // max_matrix)) - shards = [ - deduped[index:index + shard_size] - for index in range(0, len(deduped), shard_size) - ] - matrix = [ - { - "shard": shard_index + 1, - "shard_label": f"{shard_index + 1:03d}", - "packages": shard, - "package_count": len(shard), - } - for shard_index, shard in enumerate(shards) - ] - - github_output = Path(os.environ["GITHUB_OUTPUT"]) - with github_output.open("a", encoding="utf-8") as fh: - fh.write(f"matrix={json.dumps(matrix)}\n") - fh.write(f"package_count={len(deduped)}\n") - fh.write(f"shard_count={len(matrix)}\n") - PY - - - name: Summarize selection - run: | - echo "Selected packages: ${{ steps.select.outputs.package_count }}" >> "$GITHUB_STEP_SUMMARY" - echo "Shards: ${{ steps.select.outputs.shard_count }}" >> "$GITHUB_STEP_SUMMARY" - echo '${{ steps.select.outputs.matrix }}' >> "$GITHUB_STEP_SUMMARY" - - build: - needs: prepare - if: ${{ needs.prepare.outputs.package_count != '0' }} - runs-on: ubuntu-latest - container: - image: ${{ inputs.builder_image }} - strategy: - fail-fast: false - max-parallel: 128 - matrix: - include: ${{ fromJSON(needs.prepare.outputs.matrix) }} - steps: - - uses: actions/checkout@v4 - - - name: Cache Fedora DNF data - uses: actions/cache@v4 - with: - path: | - /var/cache/dnf - /var/lib/dnf - key: dnf-fedora-${{ inputs.fedora_release }} - restore-keys: | - dnf-fedora-${{ inputs.fedora_release }}- - - - name: Verify builder toolchain - run: | - command -v dnf - command -v fedpkg - command -v rpmbuild - command -v git - command -v node - command -v gcc - command -v g-ir-scanner - command -v gi-docgen - rpm -q rpm-build rpmdevtools dnf-plugins-core - - - name: Build shard packages - env: - SHARD_INDEX: ${{ matrix.shard }} - PACKAGES_JSON: ${{ toJSON(matrix.packages) }} - FEDORA_BRANCH: ${{ inputs.fedora_branch }} - OPT_LEVEL: ${{ inputs.optimization_level }} - TARGET_MARCH: ${{ inputs.target_march }} - run: | - python3 <<'PY' - import json - import os - import shutil - import subprocess - import time - from pathlib import Path - - workspace = Path(os.environ["GITHUB_WORKSPACE"]) - shard_index = int(os.environ["SHARD_INDEX"]) - packages = json.loads(os.environ["PACKAGES_JSON"]) - fedora_branch = os.environ["FEDORA_BRANCH"] - opt_level = os.environ["OPT_LEVEL"] - target_march = os.environ["TARGET_MARCH"] - optflags_override = ( - f"{opt_level} -flto=auto -ffat-lto-objects -fexceptions -g " - "-grecord-gcc-switches -pipe -Wall -Wno-complain-wrong-lang " - "-Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 " - "-Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 " - "-fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 " - f"-m64 -march={target_march} -mtune=generic -fasynchronous-unwind-tables " - "-fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 " - "-fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" - ) - shard_root = workspace / "artifacts" / f"shard-{shard_index:03d}" - shard_root.mkdir(parents=True, exist_ok=True) - rpmbuild_root = workspace / ".rpmbuild" - rpmbuild_root.mkdir(parents=True, exist_ok=True) - - def run_with_retry(command, *, cwd=None, cleanup_path=None, attempts=4, initial_delay=5): - delay = initial_delay - for attempt in range(1, attempts + 1): - if cleanup_path is not None and cleanup_path.exists(): - shutil.rmtree(cleanup_path) - try: - subprocess.run(command, cwd=cwd, check=True) - return - except subprocess.CalledProcessError: - if attempt == attempts: - raise - print( - f"Command failed on attempt {attempt}/{attempts}: {' '.join(command)}", - flush=True, - ) - print(f"Retrying in {delay} seconds...", flush=True) - time.sleep(delay) - delay *= 2 - - for package_name in packages: - package_dir = workspace / package_name - if package_dir.exists(): - shutil.rmtree(package_dir) - run_with_retry( - [ - "git", - "clone", - "--depth", - "1", - "--branch", - fedora_branch, - f"https://src.fedoraproject.org/rpms/{package_name}.git", - str(package_dir), - ], - cleanup_path=package_dir, - ) - run_with_retry(["fedpkg", "sources"], cwd=package_dir, attempts=3, initial_delay=10) - spec_file = next(package_dir.glob("*.spec"), None) - if spec_file is None: - raise SystemExit(f"No spec file found for {package_name}") - subprocess.run( - [ - "dnf", - "-y", - "builddep", - "--setopt=keepcache=1", - "--setopt=skip_if_unavailable=True", - str(spec_file), - ], - cwd=package_dir, - check=True, - ) - topdir = rpmbuild_root / package_name - for subdir in ("BUILD", "BUILDROOT", "RPMS", "SOURCES", "SPECS", "SRPMS"): - (topdir / subdir).mkdir(parents=True, exist_ok=True) - subprocess.run( - [ - "rpmbuild", - "-ba", - str(spec_file), - "--define", - f"optflags {optflags_override}", - "--define", - f"_topdir {topdir}", - "--define", - f"_builddir {topdir / 'BUILD'}", - "--define", - f"_buildrootdir {topdir / 'BUILDROOT'}", - "--define", - f"_rpmdir {topdir / 'RPMS'}", - "--define", - f"_srcrpmdir {topdir / 'SRPMS'}", - "--define", - f"_sourcedir {package_dir}", - "--define", - f"_specdir {package_dir}", - ], - cwd=package_dir, - check=True, - ) - - outdir = shard_root / package_name - outdir.mkdir(parents=True, exist_ok=True) - for rpm_path in (topdir / "RPMS").rglob("*.rpm"): - shutil.copy2(rpm_path, outdir / rpm_path.name) - for src_path in (topdir / "SRPMS").rglob("*.src.rpm"): - shutil.copy2(src_path, outdir / src_path.name) - print(f"Built {package_name}") - PY - - - name: Collect artifacts - env: - SHARD_LABEL: ${{ matrix.shard_label }} - run: | - OUTDIR="${GITHUB_WORKSPACE}/artifacts/shard-${SHARD_LABEL}" - ls -la "${OUTDIR}" - - - name: Upload RPM artifacts - uses: actions/upload-artifact@v4 - with: - name: rpm-shard-${{ matrix.shard_label }} - path: artifacts/shard-${{ matrix.shard_label }}/ - if-no-files-found: error - - - name: Append build summary - if: always() - env: - SHARD_LABEL: ${{ matrix.shard_label }} - run: | - echo "### shard-${SHARD_LABEL}" >> "$GITHUB_STEP_SUMMARY" - if [ -d "artifacts/shard-${SHARD_LABEL}" ]; then - find "artifacts/shard-${SHARD_LABEL}" -maxdepth 2 -type f | sort >> "$GITHUB_STEP_SUMMARY" - else - echo "No artifacts collected." >> "$GITHUB_STEP_SUMMARY" - fi diff --git a/.github/workflows/build-v3-rpms.yml b/.github/workflows/build-v3-rpms.yml new file mode 100644 index 0000000..51e0902 --- /dev/null +++ b/.github/workflows/build-v3-rpms.yml @@ -0,0 +1,181 @@ +name: Build Fedora x86_64-v3 RPMs + +on: + workflow_dispatch: + push: + paths: + - 'packages.txt' + - '.github/workflows/build-v3-rpms.yml' + +permissions: + contents: read + +jobs: + prepare: + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.select.outputs.matrix }} + package_count: ${{ steps.select.outputs.package_count }} + steps: + - uses: actions/checkout@v4 + + - id: select + run: | + python3 <<'PY' + import json + import os + from pathlib import Path + + packages_file = Path("packages.txt") + if not packages_file.exists(): + print("::error::packages.txt not found") + exit(1) + + packages = [ + line.strip() + for line in packages_file.read_text(encoding="utf-8").splitlines() + if line.strip() and not line.startswith("#") + ] + + # Limit matrix size to avoid GitHub Actions limits + max_matrix = 256 + matrix = [] + if packages: + shard_size = max(1, -(-len(packages) // max_matrix)) + shards = [ + packages[index:index + shard_size] + for index in range(0, len(packages), shard_size) + ] + matrix = [ + { + "shard": shard_index + 1, + "shard_label": f"{shard_index + 1:03d}", + "packages": shard, + } + for shard_index, shard in enumerate(shards) + ] + + with open(os.environ["GITHUB_OUTPUT"], "a") as fh: + fh.write(f"matrix={json.dumps(matrix)}\n") + fh.write(f"package_count={len(packages)}\n") + PY + + build: + needs: prepare + if: ${{ needs.prepare.outputs.package_count != '0' }} + runs-on: ubuntu-latest + container: + image: fedora:43 + strategy: + fail-fast: false + matrix: + include: ${{ fromJSON(needs.prepare.outputs.matrix) }} + steps: + - uses: actions/checkout@v4 + - name: Install build tools + run: | + dnf -y install 'dnf-command(builddep)' fedpkg rpm-build rpmdevtools git python3 + + - name: Build shard packages + env: + SHARD_INDEX: ${{ matrix.shard }} + PACKAGES_JSON: ${{ toJSON(matrix.packages) }} + FEDORA_BRANCH: f43 + TARGET_MARCH: x86-64-v3 + run: | + python3 <<'PY' + import json + import os + import shutil + import subprocess + import time + from pathlib import Path + + workspace = Path(os.environ["GITHUB_WORKSPACE"]) + shard_index = int(os.environ["SHARD_INDEX"]) + packages = json.loads(os.environ["PACKAGES_JSON"]) + fedora_branch = os.environ["FEDORA_BRANCH"] + target_march = os.environ["TARGET_MARCH"] + + # Standard Fedora optflags with march override + # We'll use a simplified version of the override from the other workflow + optflags_override = ( + f"-O2 -flto=auto -ffat-lto-objects -fexceptions -g " + "-grecord-gcc-switches -pipe -Wall -Werror=format-security " + "-Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 " + "-Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 " + "-fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 " + f"-m64 -march={target_march} -mtune=generic -fasynchronous-unwind-tables " + "-fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 " + "-fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" + ) + + shard_root = workspace / "artifacts" / f"shard-{shard_index:03d}" + shard_root.mkdir(parents=True, exist_ok=True) + rpmbuild_root = workspace / ".rpmbuild" + rpmbuild_root.mkdir(parents=True, exist_ok=True) + + def run_with_retry(command, *, cwd=None, cleanup_path=None, attempts=3): + for attempt in range(1, attempts + 1): + if cleanup_path is not None and cleanup_path.exists(): + shutil.rmtree(cleanup_path) + try: + subprocess.run(command, cwd=cwd, check=True) + return + except subprocess.CalledProcessError: + if attempt == attempts: + raise + time.sleep(5 * attempt) + + for package_name in packages: + package_dir = workspace / package_name + run_with_retry( + [ + "git", "clone", "--depth", "1", "--branch", fedora_branch, + f"https://src.fedoraproject.org/rpms/{package_name}.git", + str(package_dir), + ], + cleanup_path=package_dir, + ) + + run_with_retry(["fedpkg", "sources"], cwd=package_dir) + + spec_file = next(package_dir.glob("*.spec"), None) + if not spec_file: + print(f"No spec file for {package_name}") + continue + + subprocess.run(["dnf", "-y", "builddep", str(spec_file)], check=True) + + topdir = rpmbuild_root / package_name + for subdir in ("BUILD", "BUILDROOT", "RPMS", "SOURCES", "SPECS", "SRPMS"): + (topdir / subdir).mkdir(parents=True, exist_ok=True) + + subprocess.run( + [ + "rpmbuild", "-ba", str(spec_file), + "--define", f"optflags {optflags_override}", + "--define", f"_topdir {topdir}", + "--define", f"_builddir {topdir / 'BUILD'}", + "--define", f"_buildrootdir {topdir / 'BUILDROOT'}", + "--define", f"_rpmdir {topdir / 'RPMS'}", + "--define", f"_srcrpmdir {topdir / 'SRPMS'}", + "--define", f"_sourcedir {package_dir}", + "--define", f"_specdir {package_dir}", + ], + check=True, + ) + + for rpm_path in (topdir / "RPMS").rglob("*.rpm"): + shutil.copy2(rpm_path, shard_root / rpm_path.name) + for src_path in (topdir / "SRPMS").rglob("*.src.rpm"): + shutil.copy2(src_path, shard_root / src_path.name) + print(f"Built {package_name}") + PY + + - name: Upload RPM artifacts + uses: actions/upload-artifact@v4 + with: + name: rpm-shard-${{ matrix.shard_label }} + path: artifacts/shard-${{ matrix.shard_label }}/ + if-no-files-found: error diff --git a/README.md b/README.md index 48ce613..e83f30b 100644 --- a/README.md +++ b/README.md @@ -1,54 +1,5 @@ # Fedora 43 KDE GitHub Actions RPM Builder This repository is a static GitHub Actions input repo for rebuilding Fedora 43 -KDE packages from Fedora dist-git with `x86-64-v4` code generation and `-O3` -optimization. - -## What Is Checked In - -- Fedora 43 KDE binary package manifest: - [binary-packages.txt](/home/dawson/Dev/MIsc/KDE-x86_64-v4/manifests/fedora-43/binary-packages.txt) -- Fedora 43 source package manifest: - [source-packages.txt](/home/dawson/Dev/MIsc/KDE-x86_64-v4/manifests/fedora-43/source-packages.txt) -- Binary to source mapping: - [source-map.tsv](/home/dawson/Dev/MIsc/KDE-x86_64-v4/manifests/fedora-43/source-map.tsv) -- A reference macro RPM spec showing the intended RPM flag override: - [custom-macros.spec](/home/dawson/Dev/MIsc/KDE-x86_64-v4/packaging/custom-macros/custom-macros.spec) -- On-demand GitHub Actions workflow: - [build-fedora-rpms.yml](/home/dawson/Dev/MIsc/KDE-x86_64-v4/.github/workflows/build-fedora-rpms.yml) - -The checked-in manifests currently cover: - -- 342 Fedora 43 binary packages -- 265 Fedora 43 source packages - -## Build Model - -The workflow does not use COPR. It does this instead: - -1. Reads package selections from the checked-in source manifest or from a manual dispatch input. -2. Clones each selected Fedora dist-git repository from `src.fedoraproject.org`. -3. Fetches source tarballs from Fedora lookaside using `fedpkg sources`. -4. Installs `BuildRequires` with `dnf builddep`. -5. Rebuilds the package with RPM macros overriding `%optflags` to: - `-O3 -march=x86-64-v4` -6. Uploads the built `.rpm` and `.src.rpm` files as GitHub Actions artifacts. - -## Using The Workflow - -Run the `Build Fedora RPMs` workflow manually with `workflow_dispatch`. - -You can: - -- build a specific list of source packages -- provide binary package names and have them mapped to source packages -- build a chunk from the checked-in manifest by `batch_index` and `batch_size` - -This is important because GitHub Actions matrix jobs are capped, and the full -Fedora 43 KDE source manifest contains 265 packages. - -## Practical Notes - -- The workflow is intended for on-demand rebuilds, not for one-click rebuilding of the full KDE stack in a single run. -- Some packages may still fail in GitHub Actions because Fedora package builds can rely on environment assumptions that are easier to satisfy in Koji or COPR than in a generic CI runner. -- If you want to rebuild the whole stack, dispatch the workflow in batches. +KDE packages from Fedora dist-git with `x86-64-v3` code generation and `-O3` +optimization. \ No newline at end of file diff --git a/manifests/fedora-43/binary-map.tsv b/manifests/fedora-43/binary-map.tsv deleted file mode 100644 index f3090a0..0000000 --- a/manifests/fedora-43/binary-map.tsv +++ /dev/null @@ -1,101 +0,0 @@ -akonadi-server akonadi-server -akregator akregator -ark ark -audiocd-kio audiocd-kio -bluedevil bluedevil -breeze-icon-theme kf6-breeze-icons -colord-kde colord-kde -dolphin dolphin -dragon dragon -elisa-player elisa-player -ffmpegthumbs ffmpegthumbs -filelight filelight -flatpak-kcm flatpak-kcm -gwenview gwenview -initial-setup-gui-wayland-plasma kde-settings -kaccounts-integration-qt6 kaccounts-integration -kaccounts-providers kaccounts-providers -kaddressbook kaddressbook -kamera kamera -kamoso kamoso -kate kate -kcalc kcalc -kcharselect kcharselect -kde-connect kde-connect -kde-gtk-config kde-gtk-config -kde-inotify-survey kde-inotify-survey -kde-l10n kde-l10n -kde-partitionmanager kde-partitionmanager -kde-settings-pulseaudio kde-settings -kdebugsettings kdebugsettings -kdegraphics-thumbnailers kdegraphics-thumbnailers -kdenetwork-filesharing kdenetwork-filesharing -kdeplasma-addons kdeplasma-addons -kdialog kdialog -kdnssd kdnssd -keditbookmarks keditbookmarks -kf6-baloo-file kf6-baloo -kfind kfind -kgpg kgpg -khelpcenter khelpcenter -kinfocenter kinfocenter -kio-admin kio-admin -kio-gdrive kio-gdrive -kjournald kjournald -kmahjongg kmahjongg -kmail kmail -kmenuedit kmenuedit -kmines kmines -kmouth kmouth -kolourpaint kolourpaint -konsole konsole -kontact kontact -korganizer korganizer -kpat kpat -krdc krdc -krdp krdp -krfb krfb -kscreen kscreen -kscreenlocker kscreenlocker -ksshaskpass ksshaskpass -kwalletmanager5 kwalletmanager5 -kwebkitpart kwebkitpart -kwin kwin -kwrite kate -neochat neochat -okular okular -pam-kwallet pam-kwallet -phonon-qt6-backend-vlc phonon-backend-vlc -plasma-breeze plasma-breeze -plasma-desktop plasma-desktop -plasma-desktop-doc plasma-desktop -plasma-discover plasma-discover -plasma-discover-notifier plasma-discover -plasma-disks plasma-disks -plasma-drkonqi plasma-drkonqi -plasma-nm plasma-nm -plasma-nm-l2tp plasma-nm -plasma-nm-openconnect plasma-nm -plasma-nm-openswan plasma-nm -plasma-nm-openvpn plasma-nm -plasma-nm-pptp plasma-nm -plasma-nm-vpnc plasma-nm -plasma-pa plasma-pa -plasma-print-manager plasma-print-manager -plasma-systemmonitor plasma-systemmonitor -plasma-thunderbolt plasma-thunderbolt -plasma-vault plasma-vault -plasma-welcome plasma-welcome -plasma-welcome-fedora plasma-welcome-fedora -plasma-workspace plasma-workspace -plasma-workspace-wallpapers plasma-workspace-wallpapers -plasma-workspace-wayland plasma-workspace -polkit-kde polkit-kde -sddm sddm -sddm-breeze plasma-desktop -sddm-kcm sddm-kcm -sddm-wayland-plasma plasma-workspace -signon-kwallet-extension signon-kwallet-extension -skanpage skanpage -spectacle spectacle -xwaylandvideobridge xwaylandvideobridge diff --git a/manifests/fedora-43/binary-packages.txt b/manifests/fedora-43/binary-packages.txt deleted file mode 100644 index 91a461e..0000000 --- a/manifests/fedora-43/binary-packages.txt +++ /dev/null @@ -1,101 +0,0 @@ -akonadi-server -akregator -ark -audiocd-kio -bluedevil -breeze-icon-theme -colord-kde -dolphin -dragon -elisa-player -ffmpegthumbs -filelight -flatpak-kcm -gwenview -initial-setup-gui-wayland-plasma -kaccounts-integration-qt6 -kaccounts-providers -kaddressbook -kamera -kamoso -kate -kcalc -kcharselect -kde-connect -kde-gtk-config -kde-inotify-survey -kde-l10n -kde-partitionmanager -kde-settings-pulseaudio -kdebugsettings -kdegraphics-thumbnailers -kdenetwork-filesharing -kdeplasma-addons -kdialog -kdnssd -keditbookmarks -kf6-baloo-file -kfind -kgpg -khelpcenter -kinfocenter -kio-admin -kio-gdrive -kjournald -kmahjongg -kmail -kmenuedit -kmines -kmouth -kolourpaint -konsole -kontact -korganizer -kpat -krdc -krdp -krfb -kscreen -kscreenlocker -ksshaskpass -kwalletmanager5 -kwebkitpart -kwin -kwrite -neochat -okular -pam-kwallet -phonon-qt6-backend-vlc -plasma-breeze -plasma-desktop -plasma-desktop-doc -plasma-discover -plasma-discover-notifier -plasma-disks -plasma-drkonqi -plasma-nm -plasma-nm-l2tp -plasma-nm-openconnect -plasma-nm-openswan -plasma-nm-openvpn -plasma-nm-pptp -plasma-nm-vpnc -plasma-pa -plasma-print-manager -plasma-systemmonitor -plasma-thunderbolt -plasma-vault -plasma-welcome -plasma-welcome-fedora -plasma-workspace -plasma-workspace-wallpapers -plasma-workspace-wayland -polkit-kde -sddm -sddm-breeze -sddm-kcm -sddm-wayland-plasma -signon-kwallet-extension -skanpage -spectacle -xwaylandvideobridge diff --git a/manifests/fedora-43/source-map.tsv b/manifests/fedora-43/source-map.tsv deleted file mode 100644 index f3090a0..0000000 --- a/manifests/fedora-43/source-map.tsv +++ /dev/null @@ -1,101 +0,0 @@ -akonadi-server akonadi-server -akregator akregator -ark ark -audiocd-kio audiocd-kio -bluedevil bluedevil -breeze-icon-theme kf6-breeze-icons -colord-kde colord-kde -dolphin dolphin -dragon dragon -elisa-player elisa-player -ffmpegthumbs ffmpegthumbs -filelight filelight -flatpak-kcm flatpak-kcm -gwenview gwenview -initial-setup-gui-wayland-plasma kde-settings -kaccounts-integration-qt6 kaccounts-integration -kaccounts-providers kaccounts-providers -kaddressbook kaddressbook -kamera kamera -kamoso kamoso -kate kate -kcalc kcalc -kcharselect kcharselect -kde-connect kde-connect -kde-gtk-config kde-gtk-config -kde-inotify-survey kde-inotify-survey -kde-l10n kde-l10n -kde-partitionmanager kde-partitionmanager -kde-settings-pulseaudio kde-settings -kdebugsettings kdebugsettings -kdegraphics-thumbnailers kdegraphics-thumbnailers -kdenetwork-filesharing kdenetwork-filesharing -kdeplasma-addons kdeplasma-addons -kdialog kdialog -kdnssd kdnssd -keditbookmarks keditbookmarks -kf6-baloo-file kf6-baloo -kfind kfind -kgpg kgpg -khelpcenter khelpcenter -kinfocenter kinfocenter -kio-admin kio-admin -kio-gdrive kio-gdrive -kjournald kjournald -kmahjongg kmahjongg -kmail kmail -kmenuedit kmenuedit -kmines kmines -kmouth kmouth -kolourpaint kolourpaint -konsole konsole -kontact kontact -korganizer korganizer -kpat kpat -krdc krdc -krdp krdp -krfb krfb -kscreen kscreen -kscreenlocker kscreenlocker -ksshaskpass ksshaskpass -kwalletmanager5 kwalletmanager5 -kwebkitpart kwebkitpart -kwin kwin -kwrite kate -neochat neochat -okular okular -pam-kwallet pam-kwallet -phonon-qt6-backend-vlc phonon-backend-vlc -plasma-breeze plasma-breeze -plasma-desktop plasma-desktop -plasma-desktop-doc plasma-desktop -plasma-discover plasma-discover -plasma-discover-notifier plasma-discover -plasma-disks plasma-disks -plasma-drkonqi plasma-drkonqi -plasma-nm plasma-nm -plasma-nm-l2tp plasma-nm -plasma-nm-openconnect plasma-nm -plasma-nm-openswan plasma-nm -plasma-nm-openvpn plasma-nm -plasma-nm-pptp plasma-nm -plasma-nm-vpnc plasma-nm -plasma-pa plasma-pa -plasma-print-manager plasma-print-manager -plasma-systemmonitor plasma-systemmonitor -plasma-thunderbolt plasma-thunderbolt -plasma-vault plasma-vault -plasma-welcome plasma-welcome -plasma-welcome-fedora plasma-welcome-fedora -plasma-workspace plasma-workspace -plasma-workspace-wallpapers plasma-workspace-wallpapers -plasma-workspace-wayland plasma-workspace -polkit-kde polkit-kde -sddm sddm -sddm-breeze plasma-desktop -sddm-kcm sddm-kcm -sddm-wayland-plasma plasma-workspace -signon-kwallet-extension signon-kwallet-extension -skanpage skanpage -spectacle spectacle -xwaylandvideobridge xwaylandvideobridge diff --git a/manifests/fedora-43/source-packages.txt b/manifests/fedora-43/source-packages.txt deleted file mode 100644 index 8b8860d..0000000 --- a/manifests/fedora-43/source-packages.txt +++ /dev/null @@ -1,88 +0,0 @@ -akonadi-server -akregator -ark -audiocd-kio -bluedevil -colord-kde -dolphin -dragon -elisa-player -ffmpegthumbs -filelight -flatpak-kcm -gwenview -kaccounts-integration -kaccounts-providers -kaddressbook -kamera -kamoso -kate -kcalc -kcharselect -kdebugsettings -kde-connect -kdegraphics-thumbnailers -kde-gtk-config -kde-inotify-survey -kde-l10n -kdenetwork-filesharing -kde-partitionmanager -kdeplasma-addons -kde-settings -kdialog -kdnssd -keditbookmarks -kf6-baloo -kf6-breeze-icons -kfind -kgpg -khelpcenter -kinfocenter -kio-admin -kio-gdrive -kjournald -kmahjongg -kmail -kmenuedit -kmines -kmouth -kolourpaint -konsole -kontact -korganizer -kpat -krdc -krdp -krfb -kscreen -kscreenlocker -ksshaskpass -kwalletmanager5 -kwebkitpart -kwin -neochat -okular -pam-kwallet -phonon-backend-vlc -plasma-breeze -plasma-desktop -plasma-discover -plasma-disks -plasma-drkonqi -plasma-nm -plasma-pa -plasma-print-manager -plasma-systemmonitor -plasma-thunderbolt -plasma-vault -plasma-welcome -plasma-welcome-fedora -plasma-workspace -plasma-workspace-wallpapers -polkit-kde -sddm -sddm-kcm -signon-kwallet-extension -skanpage -spectacle -xwaylandvideobridge diff --git a/packages.txt b/packages.txt new file mode 100644 index 0000000..d8bc5fd --- /dev/null +++ b/packages.txt @@ -0,0 +1 @@ +kwin \ No newline at end of file diff --git a/packaging/custom-macros/custom-macros.spec b/packaging/custom-macros/custom-macros.spec deleted file mode 100644 index 5b6fb01..0000000 --- a/packaging/custom-macros/custom-macros.spec +++ /dev/null @@ -1,31 +0,0 @@ -%global v4_optflags -O3 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wno-complain-wrong-lang -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v4 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer - -Name: custom-macros -Version: 1.0 -Release: 1%{?dist} -Summary: COPR buildroot macros for x86-64-v4 KDE rebuilds - -License: MIT -URL: https://copr.fedorainfracloud.org/ -BuildArch: noarch - -%description -This package injects RPM macros into the buildroot so packages built in this -COPR use Fedora-style optimization flags with x86-64-v4 code generation. - -%prep - -%build - -%install -mkdir -p %{buildroot}%{_rpmmacrodir} -cat > %{buildroot}%{_rpmmacrodir}/macros.custom <<'EOF' -%%optflags %{v4_optflags} -EOF - -%files -%{_rpmmacrodir}/macros.custom - -%changelog -* Fri Apr 17 2026 Codex - 1.0-1 -- Initial x86-64-v4 macro package for COPR KDE rebuilds