生成更新

此文档已移动!

以下文本将在下一次发布后删除。

重新生成配置

不要忘记重新运行并检入配置文件和configure.in。这通常应该在修改configure.in或aclocal.m4时完成。当版本号在葡萄膜。小时

在Linux系统上,

cd icu4c/源

自动频率

查看要配置的更改,最常见的是更新的ICU版本号。有时,由于所使用的autoconf工具的不同版本,会存在差异。

更新urename。小时

更新urename.h以捕获所有可能的ICU4C库导出(尤其是在倾向于忽略导出限定符的非Windows系统上)。请参见 icu4c/source/tools/genren/README.

将新版本与前一版本进行比较;这里通常有一些糟糕的定义。

您需要确保所有定义都是正确的导出符号,并且Perl脚本没有无意中捕获无关文本。每个定义的格式应为“uxxxx_NamingConvention”。如果不是,那么您需要确定这是脚本问题还是命名不当的方法。

另外,请注意此类消息:“***警告ShoeSize::ShoeSize()上的错误命名空间(不是“icu”)-这可能意味着在“icu”命名空间中没有定义类。请考虑添加U_NAMESPACE_BEGIN公司U_NAMESPACE_END(美国地名)围绕类和成员定义。

更新池捆绑包

ICU 64过时+:不再签入池捆绑包。相反,它们是动态构建的。(如果数据被过滤,则更小。)

区域设置数据资源捆绑包使用pool.res捆绑包(每个捆绑包树一个)来共享其大部分资源表键字符串。我们应该在每次发布时更新一次池包,或者在从CLDR获取新数据时,或者在更改树或键结构时,以捕获更改的键字符串集。

    1. 建造ICU4C

    2. 检查旧池捆绑包的日期和大小,以便稍后进行比较

    3. ~/icu/mine/src$find icu4c-name“pool.res”-exec ls-l“{}”\;

    4. 临时修改数据生成文件:s/usePoolBundle/writePoolBund/

      1. 如果您不在Windows上,则可能还需要对Makefile进行其他更改。请参见重症监护室-8101(包含数据/Makefile修补程序;在那里使用最新版本)

      2. 我喜欢复制Makefile,然后对其进行更改,将其保存以备可能的重用,然后再将原始文件复制回来。

      3. 尝试修补它,而不是手动重做:~/icu/mine/bld/icu4c/data$patch-p0<~/Downloads/Makefile-writePoolBundle.patch

    5. 重建数据(确保它确实得到重建:cd data,make clean,make)

    6. 复制所有pool.res文件,如下所示

      1. Linux ICU 63,从构建输出的数据目录中:

      2. 重症监护病房=icudt63l

      3. cp-out/build/$ICUDT/pool.res../..//src/icu4c/source/data/locates(src/icu4c/source/data/locates)

      4. cp-out/build/$ICUDT/lang/pool.res../..//src/icu4c/source/data/lang

      5. cp-out/build/$ICUDT/region/pool.res../..//src/icu4c/source/data/region

      6. cp-out/build/$ICUDT/zone/pool.res../..//src/icu4c/source/data/zone

      7. cp-out/build/$ICUDT/curr/pool.res../..//src/icu4c/source/data/curr

      8. cp-out/build/$ICUDT/unit/pool.res../..//src/icu4c/source/data/unit

    1. 双击旧泳池捆绑包的日期和大小。由于CLDR数据的增加,大小通常比以前高出几个百分点。

    2. 还原数据生成文件更改(如果保留了副本,请复制回原始文件)

    3. 重建数据(确保它确实得到重建:make clean,make)

    4. 构建ICU4C并运行测试

    5. 重建ICU4J data.jar文件

如果有应使用pool.res文件的新捆绑树(如ICU 54票据中的“单元”树 #11092个),然后首先修改数据生成文件(Windows和Linux),将新的pool.res添加到相应的文件列表中,并首先添加--writePoolBundle,最后还需要将其转换为--usePoolBund。或者,更简单的做法是,首先复制(svn-cp)父树的池包,然后在稍后(可能在发布任务工作期间)对其进行更新。