合并受阻
当前仓库存在以下 保护分支 :
| 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,将立即执行同步操作
注意:
- /sync 命令可以指定同步到多个分支,仅最后一个 /sync 命令生效
- 如果创建的同步 PR 不正确,可通过向同步 PR 的源分支提交轻量级 PR 完善,或使用 /close 命令关闭


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 ,


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


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


| 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 | |||


当前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。主要移植适配过程如下:configure.ac中当 libical >= 4.0 时额外检查 libicalss(对应上游 meson 的dependency('libicalss'))。icalrecurrencetype改为指针 API,icalproperty_get_rrule()返回指针、icalrecurrencetype_from_string()更名为icalrecurrencetype_new_from_string()(返回堆指针,用后icalrecurrencetype_unref());各调用点(appt_add_recur_internal、process_alarm_trigger、xfical_appt_get_next_on_day_internal、xfical_mark_calendar_from_component、xfical_icalcomponent_archive_recurrent等)同步适配,读取路径改为拷贝指针内容。rrule.by_day[]固定数组改为rrule.by[ICAL_BY_DAY]动态数组(icalarray),按size字段遍历;ical_appt_get_rrule_internal()的 BYDAY 解析循环同步适配。icaltime_add()/icaltime_subtract()在 libical 4 中更名为icalduration_extend()/icalduration_from_times(),icaldurationtype_from_int()/as_int()更名为from_seconds()/as_seconds()(以宏映射,libical 3 路径保持不变)。icalcomponent_new_clone()在 libical 4 中更名为icalcomponent_clone()(ical-code.c、ical-archive.c、ical-expimp.c 共 4 处)。icalcomponent_foreach_recurrence回调的icaltime_span参数在 libical 4 中为 const 指针(mark_calendar、add_appt_to_list)。icalproperty_vanew_*()的结束哨兵0改为NULL(适配 gcc sentinel 属性检查)。Patch0(orage-4.18.0-libical4.patch)、BuildRequires: pkgconfig(libicalss),Release 1 → 2。mark_calendar2、o_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可干净应用;按计划尚未进行编译验证,如需要可在检视时补充。