From 3838b6e64f41973d5e966ad7a21f7638e950e6a0 Mon Sep 17 00:00:00 2001 From: Hershel Date: Wed, 26 Nov 2025 06:25:31 +0000 Subject: [PATCH 1/6] update ignition-msgs7.spec. Signed-off-by: Hershel --- ignition-msgs7.spec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ignition-msgs7.spec b/ignition-msgs7.spec index feafa93..91e6499 100644 --- a/ignition-msgs7.spec +++ b/ignition-msgs7.spec @@ -11,8 +11,8 @@ Source0: ignition-msgs-7.2.0.tar.gz BuildRequires: cmake BuildRequires: gcc-c++ -BuildRequires: protobuf2-devel -BuildRequires: protobuf2-compiler +BuildRequires: protobuf-devel >= 3 +BuildRequires: protobuf-compiler >= 3 BuildRequires: ignition-cmake-devel >= 2 BuildRequires: ignition-math-devel >= 6 BuildRequires: ignition-tools-devel >= 1.5.0 @@ -85,7 +85,11 @@ mkdir -p %{buildroot}%{_libdir}/ruby/ignition/msgs7 %files %{_libdir}/libignition-msgs*.so.* %{_libdir}/ruby/ignition/msgs7/ +%if 0%{?_lib} == lib64 /usr/lib/ruby/ignition/cmdmsgs7.rb +%else +%{_libdir}/ruby/ignition/cmdmsgs7.rb +%endif %{_datadir}/ignition/msgs7.yaml %files devel -- Gitee From d51086a7d1473aa5b5b73776fc86178422a7f6e4 Mon Sep 17 00:00:00 2001 From: Hershel Date: Wed, 26 Nov 2025 06:35:08 +0000 Subject: [PATCH 2/6] update ignition-msgs7.spec. Signed-off-by: Hershel --- ignition-msgs7.spec | 4 ---- 1 file changed, 4 deletions(-) diff --git a/ignition-msgs7.spec b/ignition-msgs7.spec index 91e6499..1609d9f 100644 --- a/ignition-msgs7.spec +++ b/ignition-msgs7.spec @@ -85,11 +85,7 @@ mkdir -p %{buildroot}%{_libdir}/ruby/ignition/msgs7 %files %{_libdir}/libignition-msgs*.so.* %{_libdir}/ruby/ignition/msgs7/ -%if 0%{?_lib} == lib64 -/usr/lib/ruby/ignition/cmdmsgs7.rb -%else %{_libdir}/ruby/ignition/cmdmsgs7.rb -%endif %{_datadir}/ignition/msgs7.yaml %files devel -- Gitee From 38344fdac199e2921b8c7df7d6eafab89dc882fa Mon Sep 17 00:00:00 2001 From: Hershel Date: Wed, 26 Nov 2025 07:03:27 +0000 Subject: [PATCH 3/6] update ignition-msgs7.spec. Signed-off-by: Hershel --- ignition-msgs7.spec | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ignition-msgs7.spec b/ignition-msgs7.spec index 1609d9f..8cf8687 100644 --- a/ignition-msgs7.spec +++ b/ignition-msgs7.spec @@ -19,6 +19,8 @@ BuildRequires: ignition-tools-devel >= 1.5.0 BuildRequires: abseil-cpp-devel BuildRequires: pkgconfig BuildRequires: tinyxml2-devel +BuildRequires: ruby +BuildRequires: ruby-devel %description Ignition msgs is a component in the Ignition framework, a set of libraries -- Gitee From fd716ca27f7eb85b93fbd44b1d9c733db8e34afe Mon Sep 17 00:00:00 2001 From: Hershel Date: Wed, 26 Nov 2025 07:34:27 +0000 Subject: [PATCH 4/6] update ignition-msgs7.spec. Signed-off-by: Hershel --- ignition-msgs7.spec | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/ignition-msgs7.spec b/ignition-msgs7.spec index 8cf8687..548559b 100644 --- a/ignition-msgs7.spec +++ b/ignition-msgs7.spec @@ -60,34 +60,34 @@ make %{?_smp_mflags} cd build make install DESTDIR=%{buildroot} -# 更安全的路径修复方式(处理已存在目录的情况) +# --- 调试:在修改路径前查看实际文件位置 --- +echo "==== DEBUG: Initial file listing ====" +find %{buildroot} -name "*cmdmsgs*.rb" +echo "=====================================" + +# --- 改进的路径修复逻辑 --- +# 处理 /usr/usr 双重前缀问题 if [ -d "%{buildroot}/usr/usr" ]; then - # 移动 lib64 内容(如果目标目录已存在则合并) - if [ -d "%{buildroot}/usr/usr/lib64" ]; then - mkdir -p %{buildroot}/usr/lib64 - cp -a %{buildroot}/usr/usr/lib64/* %{buildroot}/usr/lib64/ - rm -rf %{buildroot}/usr/usr/lib64 - fi - - # 移动其他目录 - for dir in %{buildroot}/usr/usr/*; do - if [ -e "$dir" ]; then - mkdir -p %{buildroot}/usr/$(basename "$dir") - mv -n "$dir"/* %{buildroot}/usr/$(basename "$dir")/ - fi - done - - # 清理空目录 + echo "Fixing double /usr prefix..." + # 使用 cp -a 递归合并,出错不停止 + cp -a %{buildroot}/usr/usr/* %{buildroot}/usr/ || true rm -rf %{buildroot}/usr/usr fi -# 确保 Ruby 文件目录存在 +# 再次确保 Ruby 目标目录存在 mkdir -p %{buildroot}%{_libdir}/ruby/ignition/msgs7 +# --- 调试:在修改路径后确认文件位置 --- +echo "==== DEBUG: Final file listing ====" +find %{buildroot} -name "*cmdmsgs*.rb" +find %{buildroot} -name "ignition" -type d +echo "===================================" + %files %{_libdir}/libignition-msgs*.so.* -%{_libdir}/ruby/ignition/msgs7/ -%{_libdir}/ruby/ignition/cmdmsgs7.rb +# 放宽匹配:匹配 ruby 目录下的 ignition 文件夹及其所有内容 +# 使用 /usr/lib* 通配符以同时兼容 /usr/lib 和 /usr/lib64 +/usr/lib*/ruby/ignition/ %{_datadir}/ignition/msgs7.yaml %files devel @@ -98,4 +98,4 @@ mkdir -p %{buildroot}%{_libdir}/ruby/ignition/msgs7 %changelog * Tue Aug 01 2023 Your Name - 7.2.0-1 -- Initial package for Ignition msgs 7.2.0 \ No newline at end of file +- Fix paths and dependencies \ No newline at end of file -- Gitee From 03b2b9d751f6034eb50309b7029c5f89490a306a Mon Sep 17 00:00:00 2001 From: Hershel Date: Wed, 26 Nov 2025 08:02:14 +0000 Subject: [PATCH 5/6] update ignition-msgs7.spec. Signed-off-by: Hershel --- ignition-msgs7.spec | 56 +++++++++++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 20 deletions(-) diff --git a/ignition-msgs7.spec b/ignition-msgs7.spec index 548559b..6f197c3 100644 --- a/ignition-msgs7.spec +++ b/ignition-msgs7.spec @@ -60,34 +60,50 @@ make %{?_smp_mflags} cd build make install DESTDIR=%{buildroot} -# --- 调试:在修改路径前查看实际文件位置 --- -echo "==== DEBUG: Initial file listing ====" -find %{buildroot} -name "*cmdmsgs*.rb" -echo "=====================================" +# --- 关键修正逻辑开始 --- -# --- 改进的路径修复逻辑 --- -# 处理 /usr/usr 双重前缀问题 +# 1. 处理 /usr/usr 双重前缀问题 (先合并这个) if [ -d "%{buildroot}/usr/usr" ]; then - echo "Fixing double /usr prefix..." - # 使用 cp -a 递归合并,出错不停止 - cp -a %{buildroot}/usr/usr/* %{buildroot}/usr/ || true + cp -a %{buildroot}/usr/usr/* %{buildroot}/usr/ rm -rf %{buildroot}/usr/usr fi -# 再次确保 Ruby 目标目录存在 -mkdir -p %{buildroot}%{_libdir}/ruby/ignition/msgs7 +# 2. 自动修正 Ruby 文件位置 +# 这一步会查找 cmdmsgs7.rb 到底在哪,如果不在 lib64 下,就把它移过去 +# 这样能同时解决 "安装在 /usr/lib" 和 "安装在 /usr/lib64" 的问题 +TARGET_RUBY_DIR="%{buildroot}%{_libdir}/ruby/ignition" +mkdir -p "$TARGET_RUBY_DIR" + +# 查找已安装的 cmdmsgs7.rb 文件位置 +FOUND_RB=$(find %{buildroot} -name "cmdmsgs7.rb" -type f | head -n 1) + +if [ -n "$FOUND_RB" ]; then + echo "Found ruby file at: $FOUND_RB" + # 获取它所在的目录 + FOUND_DIR=$(dirname "$FOUND_RB") + + # 如果找到的目录不是我们预期的目录,则移动文件 + if [ "$FOUND_DIR" != "$TARGET_RUBY_DIR" ]; then + echo "Moving ruby files from $FOUND_DIR to $TARGET_RUBY_DIR" + mv "$FOUND_DIR"/* "$TARGET_RUBY_DIR"/ + # 尝试删除旧的空目录 (例如 /usr/lib/ruby/ignition) + rmdir -p "$FOUND_DIR" 2>/dev/null || true + fi +else + echo "WARNING: cmdmsgs7.rb was NOT generated by cmake!" + echo "Check build logs for Ruby detection errors." + # 为了让构建不报错(如果该文件不是必须的),可以生成一个空的占位符 + # 或者如果不生成就让它失败,下面的 exit 1 会确保我们知道文件没生成 + # exit 1 +fi -# --- 调试:在修改路径后确认文件位置 --- -echo "==== DEBUG: Final file listing ====" -find %{buildroot} -name "*cmdmsgs*.rb" -find %{buildroot} -name "ignition" -type d -echo "===================================" +# --- 关键修正逻辑结束 --- %files %{_libdir}/libignition-msgs*.so.* -# 放宽匹配:匹配 ruby 目录下的 ignition 文件夹及其所有内容 -# 使用 /usr/lib* 通配符以同时兼容 /usr/lib 和 /usr/lib64 -/usr/lib*/ruby/ignition/ +# 这里使用明确的路径,因为我们在 install 阶段已经强制移动了文件 +%{_libdir}/ruby/ignition/msgs7/ +%{_libdir}/ruby/ignition/cmdmsgs7.rb %{_datadir}/ignition/msgs7.yaml %files devel @@ -98,4 +114,4 @@ echo "===================================" %changelog * Tue Aug 01 2023 Your Name - 7.2.0-1 -- Fix paths and dependencies \ No newline at end of file +- Fix ruby file paths \ No newline at end of file -- Gitee From fb4f44a7af0c509f110fd8935bbeb0bd44f98fd5 Mon Sep 17 00:00:00 2001 From: Hershel Date: Wed, 26 Nov 2025 09:12:27 +0000 Subject: [PATCH 6/6] update ignition-msgs7.spec. Signed-off-by: Hershel --- ignition-msgs7.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/ignition-msgs7.spec b/ignition-msgs7.spec index 6f197c3..e591f2b 100644 --- a/ignition-msgs7.spec +++ b/ignition-msgs7.spec @@ -105,6 +105,7 @@ fi %{_libdir}/ruby/ignition/msgs7/ %{_libdir}/ruby/ignition/cmdmsgs7.rb %{_datadir}/ignition/msgs7.yaml +%{_datadir}/ignition/ignition-msgs7/ %files devel %{_includedir}/ignition/msgs* -- Gitee