# 本文件是 Fedora Copr 源码构建 spec 模板(渠道仅 stable)。 # 与 build/packaging/linux/rpm/linglong-store.spec.in 的分工: # - rpm/linglong-store.spec.in:二进制重打包模板,%build 为空,仅复制官方 # CI 已编译产物,供本地/发布容器快速出包; # - copr/linglong-store.spec.in(本文件):从源码独立构建,可在 Fedora # Copr 的 mock chroot 内完成 Flutter SDK 引导、依赖拉取和 Release 编译, # 供社区维护者在 Copr 上自建仓库。 # 模板由 build/scripts/render-packaging-templates.sh 渲染,随 release 附件 # 发布为 linglong-store-.copr.spec,Copr 维护者直接提交该文件 URL # 即可构建。 # ---- Flutter SDK 版本锚点 ---- %global flutter_version 3.47.0 %global flutter_commit 4cf24164269a5ebf0c16a028a00727d0e77bbb05 Name: linglong-store Version: 3.6.0 Release: 2%{?dist} Summary: Linyaps Store Community Edition License: MIT URL: https://github.com/HanHan666666/flutter-linglong-store # 使用 master 分支源码包(解压后目录名为 flutter-linglong-store-master) Source0: https://github.com/HanHan666666/flutter-linglong-store/archive/master.tar.gz Source1: linglong-store.png Source2: linglong-store.desktop Source3: com.dongpl.linglong-store.v2.desktop AutoReqProv: no Requires: gtk3, xz-libs, libstdc++, hicolor-icon-theme ExclusiveArch: x86_64 aarch64 %global debug_package %{nil} BuildRequires: gtk3-devel, clang, cmake, ninja-build, pkgconf-pkg-config BuildRequires: git, tar, xz, unzip, curl %description Desktop store for browsing, installing, and managing Linyaps applications. %prep # 解压 master 分支源码包,目录名为 flutter-linglong-store-master %autosetup -n flutter-linglong-store-master # SDK 引导 git clone --depth 1 --branch "%{flutter_version}" \ https://github.com/flutter/flutter.git "%{_builddir}/flutter-sdk" cloned_commit="$(git -C "%{_builddir}/flutter-sdk" rev-parse HEAD)" if [ "$cloned_commit" != "%{flutter_commit}" ]; then echo "Flutter %{flutter_version} tag moved: $cloned_commit != %{flutter_commit}" >&2 exit 1 fi %build # 清除 GCC 专用参数,避免 clang 报错 unset CFLAGS CXXFLAGS LDFLAGS export PATH="%{_builddir}/flutter-sdk/bin:$PATH" export PUB_CACHE="%{_builddir}/pub-cache" flutter --disable-analytics flutter config --enable-linux-desktop flutter pub get flutter build linux --release \ --obfuscate \ --split-debug-info="%{_builddir}/symbols" %install # 忽略无效 RPATH(构建路径残留) export QA_RPATHS=$(( 0x0002 )) rm -rf "%{buildroot}" install -d -m 755 \ "%{buildroot}/opt/%{name}" \ "%{buildroot}/usr/bin" \ "%{buildroot}/usr/share/applications" \ "%{buildroot}/usr/share/icons/hicolor/256x256/apps" \ "%{buildroot}/usr/share/metainfo" # 复制 Flutter 构建产物 cp -a build/linux/*/release/bundle/. "%{buildroot}/opt/%{name}/" # 创建启动脚本 cat > "%{buildroot}/usr/bin/%{name}" <<'EOF' #!/usr/bin/env bash set -euo pipefail exec /opt/%{name}/linglong_store "$@" EOF chmod 755 "%{buildroot}/usr/bin/%{name}" # ---------- 安装桌面入口文件(使用已提供的 Source) ---------- # 主桌面文件(com.dongpl.linglong-store.v2.desktop) install -m 644 %{SOURCE3} "%{buildroot}/usr/share/applications/" # 旧兼容桌面文件(linglong-store.desktop,NoDisplay=true) install -m 644 %{SOURCE2} "%{buildroot}/usr/share/applications/" # ---------- 安装图标 ---------- # 安装到 icons 目录 install -m 644 %{SOURCE1} "%{buildroot}/usr/share/icons/hicolor/256x256/apps/%{name}.png" # 复制一份到 /opt 作为 logo.png cp %{SOURCE1} "%{buildroot}/opt/%{name}/logo.png" # ---------- 处理 AppStream 元数据 ---------- APPDATA_TARGET="%{buildroot}/usr/share/metainfo/%{name}.appdata.xml" found_appdata=$(find "%{_builddir}/flutter-linglong-store-master" -name "*.appdata.xml" | head -n1) if [ -n "$found_appdata" ]; then install -m 644 "$found_appdata" "$APPDATA_TARGET" else cat > "$APPDATA_TARGET" <<'EOF' linglong-store MIT MIT Linyaps Store Linyaps Store Community Edition

Desktop store for browsing, installing, and managing Linyaps applications.

https://github.com/HanHan666666/flutter-linglong-store com.dongpl.linglong-store.v2.desktop
EOF chmod 644 "$APPDATA_TARGET" fi %files %license LICENSE /opt/%{name} /usr/bin/%{name} /usr/share/applications/com.dongpl.linglong-store.v2.desktop /usr/share/applications/linglong-store.desktop /usr/share/icons/hicolor/256x256/apps/%{name}.png /usr/share/metainfo/%{name}.appdata.xml %changelog * Fri Aug 28 2026 KairikiFedora <13278297951@sina.cn> - 3.6.0-2 - Fix the issue of missing desktop entry and icon in the RPM package.