已开启
Backport upstream MR 94: build support for libical 4.x #7
Funda Wang创建于 7 天前
Backport upstream MR 94: build support for libical 4.x #7
已开启
Funda Wang创建于 7 天前
Funda Wang
Funda Wang
7 天前

当前PR是否有AI参与:

[ ] 否

[x] Yes
__1. AI Agent 平台: AtomCode
__2. AI 模型 : deepseek-v4-flash
__3. Prompt 上下文 : 将 orage 4.18.0 移植适配 libical 4(同时保持 libical 3 兼容):基于上游 MR 94 生成移植补丁、调整 spec,并协助提交本 MR。

参考:openEuler社区《生成式AI工具使用与开源贡献政策》

PR功能描述 / 为什么需要这个合入**:

orage 4.18.0 目前仅支持 libical 3.x。随着 openEuler 生态向 libical 4.x 演进,本软件需要适配 libical 4,同时保持对 libical 3 的兼容,避免依赖冲突并支持在两种环境下构建。

本 PR 将上游 xfce orage 的 merge request 94("build: Support libical 4.x")移植回 4.18.0。上游 MR 针对 master 分支(已迁移 meson 构建且代码较新),无法直接应用,因此基于其改动逐条适配到 4.18.0 autotools 代码,全部变更采用 #if ICAL_CHECK_VERSION(4, 0, 0) 条件编译(或等价宏映射),一份源码同时适配 libical 3.x 与 4.x。主要移植适配过程如下:

  1. 构建系统:上游 MR 的 meson.build 改动在 4.18.0 中不适用(4.18.0 为 autotools),改在 configure.ac 中当 libical >= 4.0 时额外检查 libicalss(对应上游 meson 的 dependency('libicalss'))。
  2. RRULE 指针化 API:libical 4 中 icalrecurrencetype 改为指针 API,icalproperty_get_rrule() 返回指针、icalrecurrencetype_from_string() 更名为 icalrecurrencetype_new_from_string()(返回堆指针,用后 icalrecurrencetype_unref());各调用点(appt_add_recur_internalprocess_alarm_triggerxfical_appt_get_next_on_day_internalxfical_mark_calendar_from_componentxfical_icalcomponent_archive_recurrent 等)同步适配,读取路径改为拷贝指针内容。
  3. RRULE 的 BY* 数组:libical 4 中 rrule.by_day[] 固定数组改为 rrule.by[ICAL_BY_DAY] 动态数组(icalarray),按 size 字段遍历;ical_appt_get_rrule_internal() 的 BYDAY 解析循环同步适配。
  4. 时间/时长 APIicaltime_add()/icaltime_subtract() 在 libical 4 中更名为 icalduration_extend()/icalduration_from_times()icaldurationtype_from_int()/as_int() 更名为 from_seconds()/as_seconds()(以宏映射,libical 3 路径保持不变)。
  5. 组件克隆icalcomponent_new_clone() 在 libical 4 中更名为 icalcomponent_clone()(ical-code.c、ical-archive.c、ical-expimp.c 共 4 处)。
  6. 回调签名icalcomponent_foreach_recurrence 回调的 icaltime_span 参数在 libical 4 中为 const 指针(mark_calendaradd_appt_to_list)。
  7. varargs 哨兵icalproperty_vanew_*() 的结束哨兵 0 改为 NULL(适配 gcc sentinel 属性检查)。
  8. spec 调整:新增 Patch0(orage-4.18.0-libical4.patch)、BuildRequires: pkgconfig(libicalss),Release 1 → 2。
  9. 不适用部分:上游 MR 中针对 4.18.0 不存在的代码(mark_calendar2o_cal_component_list_from_file 等)的 hunk 未包含。

以上所有变更均置于 #if ICAL_CHECK_VERSION(4, 0, 0) 条件编译内(或等价宏映射),libical 3 路径与原代码完全一致,不影响现有功能。

该PR关联的issue

(格式为fixes #<issue号>, 或者resolves #<issue号>): fixes #

希望检视人员了解:

移植关键点与 libical 4 API 差异对照见 PR 功能描述;补丁已在全新解包的 4.18.0 源码上验证 patch -p1 可干净应用;按计划尚未进行编译验证,如需要可在检视时补充。

likedislike
合并受阻
Funda WangFunda Wang
7 天前 创建了 pull request,commit 3a071e31
openeuler-ci-botopeneuler-ci-bot成员
7 天前 将woqidaideshi,dou33,dwl301,zhang__3125设为审查人
openeuler-ci-bot
openeuler-ci-bot成员
7 天前 评论:

当前仓库存在以下 保护分支

Protected Branch Version Release
master 4.18.0 1
openEuler-26.09-DevStation 4.18.0 1
openEuler-26.09 4.18.0 1
openEuler-20.03-LTS-SP4 4.12.1 2

评论 /sync <branch1> <branch2> ... 可将当前 PR 修改同步到其它分支(创建同步 PR):
a) 如果当前 PR 是 Open 状态,同步操作将延迟到 PR 被合并时执行
b) 如果当前 PR 已经 Merged,将立即执行同步操作

注意:

  1. /sync 命令可以指定同步到多个分支,仅最后一个 /sync 命令生效
  2. 如果创建的同步 PR 不正确,可通过向同步 PR 的源分支提交轻量级 PR 完善,或使用 /close 命令关闭
likedislike
openeuler-ci-botopeneuler-ci-bot成员
7 天前 添加了label:sig/xfce
openeuler-ci-bot
openeuler-ci-bot成员
7 天前 评论:

Welcome To openEuler Community

Hey @fundawang , thanks for your contribution to the community.

Bot Usage Manual

I'm the Bot here serving you. You can find the instructions on how to interact with me at Here . That means you can comment below every pull request or issue to trigger Bot Commands. You can self-configure the PR merge rules for this repository. For more details, please refer to Here.

Contact Guide

If you have any questions, please contact the SIG: xfce ,
and any of the maintainers: @dou33, @dwl301, @woqidaideshi, @zhang__3125 ,

likedislike
此处折叠了106条消息 查看更多
openeuler-ci-bot
openeuler-ci-bot成员
7 天前 评论:
likedislike
openeuler-ci-bot
openeuler-ci-bot成员
7 天前 评论:

aarch64架构构建及构建后检查:multiarch/src-openeuler/aarch64/orage/9/console

likedislike
openeuler-ci-bot
openeuler-ci-bot成员
7 天前 评论:

x86_64架构构建及构建后检查:multiarch/src-openeuler/x86-64/orage/9/console

likedislike
openeuler-ci-bot
openeuler-ci-bot成员
7 天前 评论:
Check Name Build Result 详情 Build Details
check_binary_file SUCCESS #9
check_lfsconfig :ballot_box_with_check:EXCLUDE
check_package_yaml_file SUCCESS
check_repo_in_maintain SUCCESS
check_consistency SUCCESS
check_spec_file SUCCESS
x86_64 check_build SUCCESS #9
check_install SUCCESS
check_license SUCCESS
aarch64 check_build SUCCESS #9
check_install SUCCESS
check_license SUCCESS
likedislike
openeuler-ci-bot
openeuler-ci-bot成员
7 天前 评论:
likedislike