update to 3.0.8
This commit is contained in:
parent
70d69b866f
commit
9e3de745e1
Binary file not shown.
BIN
libical-3.0.8.tar.gz
Normal file
BIN
libical-3.0.8.tar.gz
Normal file
Binary file not shown.
@ -1,70 +0,0 @@
|
|||||||
From 97abaada05f20973a710e194ce7c91c80bf39fe6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: orange-snn <songnannan2@huawei.com>
|
|
||||||
Date: Tue, 10 Mar 2020 16:44:19 +0800
|
|
||||||
Subject: [PATCH] Cap the number of parameters and properties to prevent
|
|
||||||
unbounded memory usage or hanging Alternate fix to #381.
|
|
||||||
|
|
||||||
---
|
|
||||||
src/libical/icalparser.c | 11 ++++++++---
|
|
||||||
1 file changed, 8 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/libical/icalparser.c b/src/libical/icalparser.c
|
|
||||||
index 5715036..416080d 100644
|
|
||||||
--- a/src/libical/icalparser.c
|
|
||||||
+++ b/src/libical/icalparser.c
|
|
||||||
@@ -46,6 +46,9 @@
|
|
||||||
|
|
||||||
#define TMP_BUF_SIZE 80
|
|
||||||
|
|
||||||
+#define MAXIMUM_ALLOWED_PARAMETERS 100
|
|
||||||
+#define MAXIMUM_ALLOWED_MULTIPLE_VALUES 500
|
|
||||||
+
|
|
||||||
struct icalparser_impl
|
|
||||||
{
|
|
||||||
int buffer_full; /* flag indicates that temp is smaller that
|
|
||||||
@@ -689,6 +692,7 @@ icalcomponent *icalparser_add_line(icalparser *parser, char *line)
|
|
||||||
{
|
|
||||||
char *str;
|
|
||||||
char *end;
|
|
||||||
+ int pcount = 0;
|
|
||||||
int vcount = 0;
|
|
||||||
icalproperty *prop;
|
|
||||||
icalproperty_kind prop_kind;
|
|
||||||
@@ -864,7 +868,7 @@ icalcomponent *icalparser_add_line(icalparser *parser, char *line)
|
|
||||||
|
|
||||||
/* Now, add any parameters to the last property */
|
|
||||||
|
|
||||||
- while (1) {
|
|
||||||
+ while (pcount < MAXIMUM_ALLOWED_PARAMETERS) {
|
|
||||||
if (*(end - 1) == ':') {
|
|
||||||
/* if the last separator was a ":" and the value is a
|
|
||||||
URL, icalparser_get_next_parameter will find the
|
|
||||||
@@ -1083,6 +1087,7 @@ icalcomponent *icalparser_add_line(icalparser *parser, char *line)
|
|
||||||
|
|
||||||
icalmemory_free_buffer(str);
|
|
||||||
str = NULL;
|
|
||||||
+ pcount++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1092,7 +1097,7 @@ icalcomponent *icalparser_add_line(icalparser *parser, char *line)
|
|
||||||
tail = 0;
|
|
||||||
icalmemory_free_buffer(str);
|
|
||||||
str = NULL;
|
|
||||||
-
|
|
||||||
+ pcount++;
|
|
||||||
} else {
|
|
||||||
/* str is NULL */
|
|
||||||
break;
|
|
||||||
@@ -1109,7 +1114,7 @@ icalcomponent *icalparser_add_line(icalparser *parser, char *line)
|
|
||||||
parameter and add one part of the value to each clone */
|
|
||||||
|
|
||||||
vcount = 0;
|
|
||||||
- while (1) {
|
|
||||||
+ while (vcount < MAXIMUM_ALLOWED_MULTIPLE_VALUES) {
|
|
||||||
/* Only some properties can have multiple values. This list was taken
|
|
||||||
from rfc5545. Also added the x-properties, because the spec actually
|
|
||||||
says that commas should be escaped. For x-properties, other apps may
|
|
||||||
--
|
|
||||||
1.8.3.1
|
|
||||||
|
|
||||||
@ -1,36 +0,0 @@
|
|||||||
From fdeb2c05160969a3251eda1b3dbd7f855656fd12 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kent Sutherland <git@ksuther.com>
|
|
||||||
Date: Sat, 11 May 2019 19:59:03 +0000
|
|
||||||
Subject: [PATCH] Reset the parser level to 0 when encountering a line with END
|
|
||||||
before BEGIN Fixes memory leaks caused by the parser behaving incorrectly
|
|
||||||
when the level is negative. oss-fuzz issue 14480, 14151, 14152, 14153, 14155.
|
|
||||||
|
|
||||||
---
|
|
||||||
src/libical/icalparser.c | 11 +++++++++--
|
|
||||||
1 file changed, 9 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/libical/icalparser.c b/src/libical/icalparser.c
|
|
||||||
index 0530a4b..6d54a7c 100644
|
|
||||||
--- a/src/libical/icalparser.c
|
|
||||||
+++ b/src/libical/icalparser.c
|
|
||||||
@@ -795,8 +795,15 @@ icalcomponent *icalparser_add_line(icalparser *parser, char *line)
|
|
||||||
icalmemory_free_buffer(str);
|
|
||||||
str = NULL;
|
|
||||||
|
|
||||||
- /* Return the component if we are back to the 0th level */
|
|
||||||
- if (parser->level == 0) {
|
|
||||||
+ if (parser->level < 0) {
|
|
||||||
+ // Encountered an END before any BEGIN, this must be invalid data
|
|
||||||
+ icalerror_warn("Encountered END before BEGIN");
|
|
||||||
+
|
|
||||||
+ parser->state = ICALPARSER_ERROR;
|
|
||||||
+ parser->level = 0;
|
|
||||||
+ return 0;
|
|
||||||
+ } else if (parser->level == 0) {
|
|
||||||
+ /* Return the component if we are back to the 0th level */
|
|
||||||
icalcomponent *rtrn;
|
|
||||||
|
|
||||||
if (pvl_count(parser->components) != 0) {
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,31 +0,0 @@
|
|||||||
From 5048c2e6084bc0df1a80416bf9760f03e243bb09 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Allen Winter <allen.winter@kdab.com>
|
|
||||||
Date: Sun, 12 May 2019 16:55:44 -0400
|
|
||||||
Subject: [PATCH] another attempt to make Coverity happy
|
|
||||||
|
|
||||||
---
|
|
||||||
src/libical/icalparser.c | 8 +++++++-
|
|
||||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/src/libical/icalparser.c b/src/libical/icalparser.c
|
|
||||||
index 6d54a7c..de7a2a4 100644
|
|
||||||
--- a/src/libical/icalparser.c
|
|
||||||
+++ b/src/libical/icalparser.c
|
|
||||||
@@ -1004,7 +1004,13 @@ icalcomponent *icalparser_add_line(icalparser *parser, char *line)
|
|
||||||
/* Reparse the parameter name and value with the new segment */
|
|
||||||
if (!parser_get_param_name_stack(str, name_stack, sizeof(name_stack),
|
|
||||||
pvalue_stack, sizeof(pvalue_stack))) {
|
|
||||||
- if (name_heap) {
|
|
||||||
+
|
|
||||||
+ if (pvalue_heap) {
|
|
||||||
+ icalmemory_free_buffer(pvalue_heap);
|
|
||||||
+ pvalue_heap = 0;
|
|
||||||
+ pvalue = 0;
|
|
||||||
+ }
|
|
||||||
+ if (name_heap) {
|
|
||||||
icalmemory_free_buffer(name_heap);
|
|
||||||
name = 0;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
@ -1,553 +0,0 @@
|
|||||||
From 153e2eb4d5990acfa9d46968ec1594bd9eee21fc Mon Sep 17 00:00:00 2001
|
|
||||||
From: Milan Crha <mcrha@redhat.com>
|
|
||||||
Date: Mon, 5 Nov 2018 11:57:25 +0100
|
|
||||||
Subject: [PATCH] libical-glib documentation doesn't go through gtkdoc-scangobj
|
|
||||||
|
|
||||||
Using gtkdoc-scangobj adds also glib GObject hierarchy, properties and
|
|
||||||
signals into the documentation. This adds also an ENABLE_GTK_DOC option
|
|
||||||
which can be used to disable the gtk-doc usage explicitly, rather than
|
|
||||||
ignore the build when necessary binaries are not found. It also extracts
|
|
||||||
the commands into a GtkDoc.cmake module, rather than have it inline
|
|
||||||
on the place where it's used.
|
|
||||||
---
|
|
||||||
CMakeLists.txt | 5 +
|
|
||||||
cmake/modules/GtkDoc.cmake | 239 +++++++++++++++++++++
|
|
||||||
doc/reference/libical-glib/CMakeLists.txt | 77 +------
|
|
||||||
.../libical-glib/libical-glib-docs.sgml.in | 80 +++++++
|
|
||||||
.../libical-glib/libical-glib-docs.xml.in | 80 -------
|
|
||||||
5 files changed, 335 insertions(+), 146 deletions(-)
|
|
||||||
create mode 100644 cmake/modules/GtkDoc.cmake
|
|
||||||
create mode 100644 doc/reference/libical-glib/libical-glib-docs.sgml.in
|
|
||||||
delete mode 100644 doc/reference/libical-glib/libical-glib-docs.xml.in
|
|
||||||
|
|
||||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
||||||
index 02af38c..1a004da 100644
|
|
||||||
--- a/CMakeLists.txt
|
|
||||||
+++ b/CMakeLists.txt
|
|
||||||
@@ -52,6 +52,11 @@
|
|
||||||
# Requires glib development package v2.20 or higher
|
|
||||||
# Default=true (build the libical-glib interface)
|
|
||||||
#
|
|
||||||
+# -DENABLE_GTK_DOC=[true|false]
|
|
||||||
+# Set to build libical-glib developer documentation
|
|
||||||
+# Requires gtk-doc and ICAL_BUILD_DOCS option to be true.
|
|
||||||
+# Default=true (build gtk-doc developer documentation)
|
|
||||||
+#
|
|
||||||
# -DUSE_32BIT_TIME_T=[true|false]
|
|
||||||
# Set to build using a 32bit time_t (ignored unless building with MSVC on Windows)
|
|
||||||
# Default=false (use the default size of time_t)
|
|
||||||
diff --git a/cmake/modules/GtkDoc.cmake b/cmake/modules/GtkDoc.cmake
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..f89b1bf
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/cmake/modules/GtkDoc.cmake
|
|
||||||
@@ -0,0 +1,239 @@
|
|
||||||
+# GtkDoc.cmake
|
|
||||||
+#
|
|
||||||
+# Macros to support develper documentation build from sources with gtk-doc.
|
|
||||||
+#
|
|
||||||
+# Note that every target and dependency should be defined before the macro is
|
|
||||||
+# called, because it uses information from those targets.
|
|
||||||
+#
|
|
||||||
+# add_gtkdoc(_module _namespace _deprecated_guards _srcdirsvar _depsvar _ignoreheadersvar)
|
|
||||||
+# Adds rules to build developer documentation using gtk-doc for some part.
|
|
||||||
+# Arguments:
|
|
||||||
+# _module - the module name, like 'camel'; it expects ${_part}-docs.sgml.in in the CMAKE_CURRENT_SOURCE_DIR
|
|
||||||
+# _namespace - namespace for symbols
|
|
||||||
+# _deprecated_guards - define name, which guards deprecated symbols
|
|
||||||
+# _srcdirsvar - variable with dirs where the source files are located
|
|
||||||
+# _depsvar - a variable with dependencies (targets)
|
|
||||||
+# _ignoreheadersvar - a variable with a set of header files to ignore
|
|
||||||
+#
|
|
||||||
+# It also adds custom target gtkdoc-rebuild-${_module}-sgml to rebuild the sgml.in
|
|
||||||
+# file based on the current sources.
|
|
||||||
+
|
|
||||||
+option(ENABLE_GTK_DOC "Use gtk-doc to build documentation" True)
|
|
||||||
+
|
|
||||||
+if(NOT ENABLE_GTK_DOC)
|
|
||||||
+ return()
|
|
||||||
+endif(NOT ENABLE_GTK_DOC)
|
|
||||||
+
|
|
||||||
+find_program(GTKDOC_SCAN gtkdoc-scan)
|
|
||||||
+find_program(GTKDOC_SCANGOBJ gtkdoc-scangobj)
|
|
||||||
+find_program(GTKDOC_MKDB gtkdoc-mkdb)
|
|
||||||
+find_program(GTKDOC_MKHTML gtkdoc-mkhtml)
|
|
||||||
+find_program(GTKDOC_FIXXREF gtkdoc-fixxref)
|
|
||||||
+
|
|
||||||
+if(NOT (GTKDOC_SCAN AND GTKDOC_MKDB AND GTKDOC_MKHTML AND GTKDOC_FIXXREF))
|
|
||||||
+ message(FATAL_ERROR "Cannot find all gtk-doc binaries, install them or use -DENABLE_GTK_DOC=OFF instead")
|
|
||||||
+ return()
|
|
||||||
+endif()
|
|
||||||
+
|
|
||||||
+if(NOT TARGET gtkdocs)
|
|
||||||
+ add_custom_target(gtkdocs ALL)
|
|
||||||
+endif(NOT TARGET gtkdocs)
|
|
||||||
+
|
|
||||||
+if(NOT TARGET gtkdoc-rebuild-sgmls)
|
|
||||||
+ add_custom_target(gtkdoc-rebuild-sgmls)
|
|
||||||
+endif(NOT TARGET gtkdoc-rebuild-sgmls)
|
|
||||||
+
|
|
||||||
+macro(add_gtkdoc _module _namespace _deprecated_guards _srcdirsvar _depsvar _ignoreheadersvar)
|
|
||||||
+ configure_file(
|
|
||||||
+ ${CMAKE_CURRENT_SOURCE_DIR}/${_module}-docs.sgml.in
|
|
||||||
+ ${CMAKE_CURRENT_BINARY_DIR}/${_module}-docs.sgml
|
|
||||||
+ @ONLY
|
|
||||||
+ )
|
|
||||||
+
|
|
||||||
+ set(OUTPUT_DOCDIR ${SHARE_INSTALL_DIR}/gtk-doc/html/${_module})
|
|
||||||
+
|
|
||||||
+ set(_filedeps)
|
|
||||||
+ set(_srcdirs)
|
|
||||||
+ foreach(_srcdir ${${_srcdirsvar}})
|
|
||||||
+ set(_srcdirs ${_srcdirs} --source-dir="${_srcdir}")
|
|
||||||
+ file(GLOB _files ${_srcdir}/*.h* ${_srcdir}/*.c*)
|
|
||||||
+ list(APPEND _filedeps ${_files})
|
|
||||||
+ endforeach(_srcdir)
|
|
||||||
+
|
|
||||||
+ set(_mkhtml_prefix "")
|
|
||||||
+ if(APPLE)
|
|
||||||
+ set(_mkhtml_prefix "${CMAKE_COMMAND} -E env XML_CATALOG_FILES=\"/usr/local/etc/xml/catalog\"")
|
|
||||||
+ endif(APPLE)
|
|
||||||
+
|
|
||||||
+ set(_scangobj_deps)
|
|
||||||
+ set(_scangobj_cflags_list)
|
|
||||||
+ set(_scangobj_cflags "")
|
|
||||||
+ set(_scangobj_ldflags "")
|
|
||||||
+ set(_scangobj_ld_lib_dirs "")
|
|
||||||
+
|
|
||||||
+ list(APPEND _scangobj_cflags_list -I${INCLUDE_INSTALL_DIR})
|
|
||||||
+ list(APPEND _scangobj_ldflags -L${LIB_INSTALL_DIR})
|
|
||||||
+
|
|
||||||
+ foreach(opt IN LISTS ${_depsvar})
|
|
||||||
+ if(TARGET ${opt})
|
|
||||||
+ set(_target_type)
|
|
||||||
+ get_target_property(_target_type ${opt} TYPE)
|
|
||||||
+ if((_target_type STREQUAL "STATIC_LIBRARY") OR (_target_type STREQUAL "SHARED_LIBRARY") OR (_target_type STREQUAL "MODULE_LIBRARY"))
|
|
||||||
+ set(_compile_options)
|
|
||||||
+ set(_link_libraries)
|
|
||||||
+
|
|
||||||
+ get_target_property(_compile_options ${opt} COMPILE_OPTIONS)
|
|
||||||
+ get_target_property(_link_libraries ${opt} LINK_LIBRARIES)
|
|
||||||
+
|
|
||||||
+ list(APPEND _scangobj_cflags_list ${_compile_options})
|
|
||||||
+ list(APPEND _scangobj_deps ${_link_libraries})
|
|
||||||
+
|
|
||||||
+ unset(_compile_options)
|
|
||||||
+ unset(_link_libraries)
|
|
||||||
+ endif((_target_type STREQUAL "STATIC_LIBRARY") OR (_target_type STREQUAL "SHARED_LIBRARY") OR (_target_type STREQUAL "MODULE_LIBRARY"))
|
|
||||||
+ unset(_target_type)
|
|
||||||
+ endif(TARGET ${opt})
|
|
||||||
+
|
|
||||||
+ list(APPEND _scangobj_deps ${opt})
|
|
||||||
+ endforeach(opt)
|
|
||||||
+
|
|
||||||
+ if(_scangobj_deps)
|
|
||||||
+ list(REMOVE_DUPLICATES _scangobj_deps)
|
|
||||||
+ endif(_scangobj_deps)
|
|
||||||
+ if(_scangobj_cflags_list)
|
|
||||||
+ list(REMOVE_DUPLICATES _scangobj_cflags_list)
|
|
||||||
+ endif(_scangobj_cflags_list)
|
|
||||||
+
|
|
||||||
+ foreach(opt IN LISTS _scangobj_cflags_list)
|
|
||||||
+ set(_scangobj_cflags "${_scangobj_cflags} ${opt}")
|
|
||||||
+ endforeach(opt)
|
|
||||||
+
|
|
||||||
+ foreach(opt IN LISTS _scangobj_deps)
|
|
||||||
+ if(TARGET ${opt})
|
|
||||||
+ set(_target_type)
|
|
||||||
+ get_target_property(_target_type ${opt} TYPE)
|
|
||||||
+ if((_target_type STREQUAL "STATIC_LIBRARY") OR (_target_type STREQUAL "SHARED_LIBRARY") OR (_target_type STREQUAL "MODULE_LIBRARY"))
|
|
||||||
+ set(_output_name "")
|
|
||||||
+ get_target_property(_output_name ${opt} OUTPUT_NAME)
|
|
||||||
+ if(NOT _output_name)
|
|
||||||
+ set(_output_name ${opt})
|
|
||||||
+ endif(NOT _output_name)
|
|
||||||
+ set(_scangobj_ldflags "${_scangobj_ldflags} -L$<TARGET_FILE_DIR:${opt}> -l${_output_name}")
|
|
||||||
+
|
|
||||||
+ if(_target_type STREQUAL "SHARED_LIBRARY" OR (_target_type STREQUAL "MODULE_LIBRARY"))
|
|
||||||
+ set(_scangobj_ld_lib_dirs "${_scangobj_ld_lib_dirs}:$<TARGET_FILE_DIR:${opt}>")
|
|
||||||
+ endif(_target_type STREQUAL "SHARED_LIBRARY" OR (_target_type STREQUAL "MODULE_LIBRARY"))
|
|
||||||
+ unset(_output_name)
|
|
||||||
+ endif((_target_type STREQUAL "STATIC_LIBRARY") OR (_target_type STREQUAL "SHARED_LIBRARY") OR (_target_type STREQUAL "MODULE_LIBRARY"))
|
|
||||||
+ unset(_target_type)
|
|
||||||
+ else(TARGET ${opt})
|
|
||||||
+ set(_scangobj_ldflags "${_scangobj_ldflags} ${opt}")
|
|
||||||
+ endif(TARGET ${opt})
|
|
||||||
+ endforeach(opt)
|
|
||||||
+
|
|
||||||
+ set(_scangobj_prefix ${CMAKE_COMMAND} -E env LD_LIBRARY_PATH="${_scangobj_ld_lib_dirs}:${LIB_INSTALL_DIR}")
|
|
||||||
+
|
|
||||||
+ if(NOT (_scangobj_cflags STREQUAL ""))
|
|
||||||
+ set(_scangobj_cflags --cflags "${_scangobj_cflags}")
|
|
||||||
+ endif(NOT (_scangobj_cflags STREQUAL ""))
|
|
||||||
+
|
|
||||||
+ if(NOT (_scangobj_ldflags STREQUAL ""))
|
|
||||||
+ set(_scangobj_ldflags --ldflags "${_scangobj_ldflags}")
|
|
||||||
+ endif(NOT (_scangobj_ldflags STREQUAL ""))
|
|
||||||
+
|
|
||||||
+ add_custom_command(OUTPUT html/index.html
|
|
||||||
+ COMMAND ${GTKDOC_SCAN}
|
|
||||||
+ --module=${_module}
|
|
||||||
+ --deprecated-guards="${_deprecated_guards}"
|
|
||||||
+ --ignore-headers="${${_ignoreheadersvar}}"
|
|
||||||
+ --rebuild-sections
|
|
||||||
+ --rebuild-types
|
|
||||||
+ ${_srcdirs}
|
|
||||||
+
|
|
||||||
+ COMMAND ${CMAKE_COMMAND} -E chdir "${CMAKE_CURRENT_BINARY_DIR}" ${_scangobj_prefix} ${GTKDOC_SCANGOBJ}
|
|
||||||
+ --module=${_module}
|
|
||||||
+ ${_scangobj_cflags}
|
|
||||||
+ ${_scangobj_ldflags}
|
|
||||||
+
|
|
||||||
+ COMMAND ${GTKDOC_MKDB}
|
|
||||||
+ --module=${_module}
|
|
||||||
+ --name-space=${_namespace}
|
|
||||||
+ --main-sgml-file="${CMAKE_CURRENT_BINARY_DIR}/${_module}-docs.sgml"
|
|
||||||
+ --sgml-mode
|
|
||||||
+ --output-format=xml
|
|
||||||
+ ${_srcdirs}
|
|
||||||
+
|
|
||||||
+ COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/html"
|
|
||||||
+
|
|
||||||
+ COMMAND ${CMAKE_COMMAND} -E chdir "${CMAKE_CURRENT_BINARY_DIR}/html" ${_mkhtml_prefix} ${GTKDOC_MKHTML} --path=.. ${_module} ../${_module}-docs.sgml
|
|
||||||
+
|
|
||||||
+ COMMAND ${GTKDOC_FIXXREF}
|
|
||||||
+ --module=${_module}
|
|
||||||
+ --module-dir=html
|
|
||||||
+ --extra-dir=..
|
|
||||||
+ --html-dir="${OUTPUT_DOCDIR}"
|
|
||||||
+
|
|
||||||
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
|
||||||
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${_module}-docs.sgml"
|
|
||||||
+ ${_filedeps}
|
|
||||||
+ COMMENT "Generating ${_module} documentation"
|
|
||||||
+ )
|
|
||||||
+
|
|
||||||
+ add_custom_target(gtkdoc-${_module}
|
|
||||||
+ DEPENDS html/index.html
|
|
||||||
+ )
|
|
||||||
+
|
|
||||||
+ if(${_depsvar})
|
|
||||||
+ add_dependencies(gtkdoc-${_module} ${${_depsvar}})
|
|
||||||
+ endif(${_depsvar})
|
|
||||||
+
|
|
||||||
+ add_dependencies(gtkdocs gtkdoc-${_module})
|
|
||||||
+
|
|
||||||
+ install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/
|
|
||||||
+ DESTINATION ${OUTPUT_DOCDIR}
|
|
||||||
+ )
|
|
||||||
+
|
|
||||||
+ # ***************************************
|
|
||||||
+ # sgml.in file rebuild, unconditional
|
|
||||||
+ # ***************************************
|
|
||||||
+ add_custom_target(gtkdoc-rebuild-${_module}-sgml
|
|
||||||
+ COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_CURRENT_BINARY_DIR}/tmp"
|
|
||||||
+ COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/tmp"
|
|
||||||
+
|
|
||||||
+ COMMAND ${CMAKE_COMMAND} -E chdir "${CMAKE_CURRENT_BINARY_DIR}/tmp"
|
|
||||||
+ ${GTKDOC_SCAN}
|
|
||||||
+ --module=${_module}
|
|
||||||
+ --deprecated-guards="${_deprecated_guards}"
|
|
||||||
+ --ignore-headers="${_ignore_headers}"
|
|
||||||
+ --rebuild-sections
|
|
||||||
+ --rebuild-types
|
|
||||||
+ ${_srcdirs}
|
|
||||||
+
|
|
||||||
+ COMMAND ${CMAKE_COMMAND} -E chdir "${CMAKE_CURRENT_BINARY_DIR}" ${_scangobj_prefix} ${GTKDOC_SCANGOBJ}
|
|
||||||
+ --module=${_module}
|
|
||||||
+ ${_scangobj_cflags}
|
|
||||||
+ ${_scangobj_ldflags}
|
|
||||||
+
|
|
||||||
+ COMMAND ${CMAKE_COMMAND} -E chdir "${CMAKE_CURRENT_BINARY_DIR}/tmp"
|
|
||||||
+ ${GTKDOC_MKDB}
|
|
||||||
+ --module=${_module}
|
|
||||||
+ --name-space=${_namespace}
|
|
||||||
+ --main-sgml-file="${CMAKE_CURRENT_BINARY_DIR}/tmp/${_module}-docs.sgml"
|
|
||||||
+ --sgml-mode
|
|
||||||
+ --output-format=xml
|
|
||||||
+ ${_srcdirs}
|
|
||||||
+
|
|
||||||
+ COMMAND ${CMAKE_COMMAND} -E rename ${CMAKE_CURRENT_BINARY_DIR}/tmp/${_module}-docs.sgml ${CMAKE_CURRENT_SOURCE_DIR}/${_module}-docs.sgml.in
|
|
||||||
+
|
|
||||||
+ COMMAND ${CMAKE_COMMAND} -E echo "File '${CMAKE_CURRENT_SOURCE_DIR}/${_module}-docs.sgml.in' overwritten, make sure you replace generated strings with proper content before committing."
|
|
||||||
+ )
|
|
||||||
+
|
|
||||||
+ add_dependencies(gtkdoc-rebuild-sgmls gtkdoc-rebuild-${_module}-sgml)
|
|
||||||
+
|
|
||||||
+ unset(_scangobj_prefix)
|
|
||||||
+ unset(_scangobj_deps)
|
|
||||||
+ unset(_scangobj_cflags_list)
|
|
||||||
+ unset(_scangobj_cflags)
|
|
||||||
+ unset(_scangobj_ldflags)
|
|
||||||
+ unset(_scangobj_ld_lib_dirs)
|
|
||||||
+endmacro(add_gtkdoc)
|
|
||||||
diff --git a/doc/reference/libical-glib/CMakeLists.txt b/doc/reference/libical-glib/CMakeLists.txt
|
|
||||||
index 4013d57..e1a6a4e 100644
|
|
||||||
--- a/doc/reference/libical-glib/CMakeLists.txt
|
|
||||||
+++ b/doc/reference/libical-glib/CMakeLists.txt
|
|
||||||
@@ -1,12 +1,4 @@
|
|
||||||
-find_program(GTKDOC_SCAN gtkdoc-scan DOC "a tool to scan header files for public symbols")
|
|
||||||
-find_program(GTKDOC_MKDB gtkdoc-mkdb DOC "a tool to generate docbook files")
|
|
||||||
-find_program(GTKDOC_MKHTML gtkdoc-mkhtml DOC "a tool to generate documentation in html format")
|
|
||||||
-find_program(GTKDOC_FIXXREF gtkdoc-fixxref DOC "a tool to fix cross references in html files")
|
|
||||||
-
|
|
||||||
-if(NOT (GTKDOC_SCAN AND GTKDOC_MKDB AND GTKDOC_MKHTML AND GTKDOC_FIXXREF))
|
|
||||||
- message(WARNING "Cannot find all gtk-doc binaries, skipping API reference generation for libical-glib")
|
|
||||||
- return()
|
|
||||||
-endif()
|
|
||||||
+include(GtkDoc)
|
|
||||||
|
|
||||||
# To regenerate libical-glib-docs.xml.in from current sources use these steps:
|
|
||||||
# a) delete ${CMAKE_CURRENT_BINARY_DIR}/libical-glib-docs.xml
|
|
||||||
@@ -22,67 +14,20 @@ endif()
|
|
||||||
# e) compare the changes in the file and return back what should be left,
|
|
||||||
# like the replacement of the "[Insert title here]" and the <bookinfo/> content
|
|
||||||
|
|
||||||
-configure_file(
|
|
||||||
- ${CMAKE_CURRENT_SOURCE_DIR}/libical-glib-docs.xml.in
|
|
||||||
- ${CMAKE_CURRENT_BINARY_DIR}/libical-glib-docs.xml
|
|
||||||
- @ONLY
|
|
||||||
-)
|
|
||||||
-
|
|
||||||
-set(OUTPUT_DOCDIR ${SHARE_INSTALL_DIR}/gtk-doc/html/libical-glib)
|
|
||||||
-
|
|
||||||
-add_custom_command(OUTPUT xml/libical-glib-doc.bottom
|
|
||||||
- COMMAND ${GTKDOC_SCAN} --module=libical-glib
|
|
||||||
- --source-dir="${CMAKE_BINARY_DIR}/src/libical-glib"
|
|
||||||
- --deprecated-guards="LIBICAL_GLIB_DISABLE_DEPRECATED"
|
|
||||||
- --ignore-headers=libical-glib-private.h
|
|
||||||
- --rebuild-sections
|
|
||||||
- --rebuild-types
|
|
||||||
+if(ENABLE_GTK_DOC)
|
|
||||||
|
|
||||||
- COMMAND ${GTKDOC_MKDB}
|
|
||||||
- --module=libical-glib
|
|
||||||
- --name-space=i-cal
|
|
||||||
- --main-sgml-file="${CMAKE_CURRENT_BINARY_DIR}/libical-glib-docs.xml"
|
|
||||||
- --xml-mode
|
|
||||||
- --output-format=xml
|
|
||||||
- --source-dir="${CMAKE_BINARY_DIR}/src/libical-glib"
|
|
||||||
- COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/html"
|
|
||||||
- DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libical-glib-docs.xml"
|
|
||||||
-)
|
|
||||||
-
|
|
||||||
-if(APPLE)
|
|
||||||
- add_custom_command(OUTPUT html/index.html
|
|
||||||
- COMMAND env XML_CATALOG_FILES="/usr/local/etc/xml/catalog" ${GTKDOC_MKHTML}
|
|
||||||
- --path=..
|
|
||||||
- libical-glib
|
|
||||||
- ../libical-glib-docs.xml
|
|
||||||
- WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html"
|
|
||||||
- DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libical-glib-docs.xml"
|
|
||||||
- "${CMAKE_CURRENT_BINARY_DIR}/xml/libical-glib-doc.bottom"
|
|
||||||
- COMMENT "Generating libical-glib documentation"
|
|
||||||
+ set(SOURCEDIRS
|
|
||||||
+ ${CMAKE_BINARY_DIR}/src/libical-glib
|
|
||||||
)
|
|
||||||
-else()
|
|
||||||
- add_custom_command(OUTPUT html/index.html
|
|
||||||
- COMMAND ${GTKDOC_MKHTML}
|
|
||||||
- --path=..
|
|
||||||
- libical-glib
|
|
||||||
- ../libical-glib-docs.xml
|
|
||||||
- WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html"
|
|
||||||
- DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libical-glib-docs.xml"
|
|
||||||
- "${CMAKE_CURRENT_BINARY_DIR}/xml/libical-glib-doc.bottom"
|
|
||||||
- COMMENT "Generating libical-glib documentation"
|
|
||||||
+
|
|
||||||
+ set(DEPENDENCIES
|
|
||||||
+ ical-glib
|
|
||||||
)
|
|
||||||
-endif()
|
|
||||||
|
|
||||||
-add_custom_target(documentation ALL
|
|
||||||
- COMMAND ${GTKDOC_FIXXREF}
|
|
||||||
- --module=libical-glib
|
|
||||||
- --module-dir=.
|
|
||||||
- --extra-dir=..
|
|
||||||
- --html-dir=${OUTPUT_DOCDIR}
|
|
||||||
- DEPENDS html/index.html
|
|
||||||
- COMMENT "Generating libical-glib documentation"
|
|
||||||
+ set(IGNORE_HEADERS
|
|
||||||
+ libical-glib-private.h
|
|
||||||
)
|
|
||||||
|
|
||||||
-add_dependencies(documentation ical-glib)
|
|
||||||
+ add_gtkdoc(libical-glib libical-glib "LIBICAL_GLIB_DISABLE_DEPRECATED" SOURCEDIRS DEPENDENCIES IGNORE_HEADERS)
|
|
||||||
|
|
||||||
-install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/ DESTINATION ${OUTPUT_DOCDIR})
|
|
||||||
+endif(ENABLE_GTK_DOC)
|
|
||||||
diff --git a/doc/reference/libical-glib/libical-glib-docs.sgml.in b/doc/reference/libical-glib/libical-glib-docs.sgml.in
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..b202e19
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/doc/reference/libical-glib/libical-glib-docs.sgml.in
|
|
||||||
@@ -0,0 +1,79 @@
|
|
||||||
+<?xml version="1.0"?>
|
|
||||||
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
|
||||||
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
|
|
||||||
+[
|
|
||||||
+ <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
|
|
||||||
+]>
|
|
||||||
+<book id="index">
|
|
||||||
+ <bookinfo>
|
|
||||||
+ <title>libical-glib Reference Manual</title>
|
|
||||||
+ <releaseinfo>
|
|
||||||
+ for libical-glib @LIBICAL_LIB_VERSION_STRING@.
|
|
||||||
+ </releaseinfo>
|
|
||||||
+ </bookinfo>
|
|
||||||
+
|
|
||||||
+ <chapter>
|
|
||||||
+ <title>API Reference</title>
|
|
||||||
+ <xi:include href="xml/i-cal-array.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-attach.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-comp-iter.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-component.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-datetimeperiod-type.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-derived-parameter.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-derived-property.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-derived-value.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-duration-type.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-enums.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-error.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-langbind.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-memory.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-mime.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-object.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-parameter.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-parser.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-period-type.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-property.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-recur.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-recur-iterator.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-recurrence-type.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-reqstat-type.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-restriction.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-time.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-time-span.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-timetype.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-timezone.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-timezone-phase.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-timezonetype.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-trigger-type.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-unknowntokenhandling.xml"/>
|
|
||||||
+ <xi:include href="xml/i-cal-value.xml"/>
|
|
||||||
+
|
|
||||||
+ </chapter>
|
|
||||||
+ <!-- enable this when you use gobject types
|
|
||||||
+ <chapter id="object-tree">
|
|
||||||
+ <title>Object Hierarchy</title>
|
|
||||||
+ <xi:include href="xml/tree_index.sgml"/>
|
|
||||||
+ </chapter>
|
|
||||||
+ -->
|
|
||||||
+ <index id="api-index-full">
|
|
||||||
+ <title>API Index</title>
|
|
||||||
+ <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
|
|
||||||
+ </index>
|
|
||||||
+ <index id="api-index-3-0" role="3.0">
|
|
||||||
+ <title>Index of new symbols in 3.0</title>
|
|
||||||
+ <xi:include href="xml/api-index-3.0.xml"><xi:fallback /></xi:include>
|
|
||||||
+ </index>
|
|
||||||
+ <index id="api-index-2-0" role="2.0">
|
|
||||||
+ <title>Index of new symbols in 2.0</title>
|
|
||||||
+ <xi:include href="xml/api-index-2.0.xml"><xi:fallback /></xi:include>
|
|
||||||
+ </index>
|
|
||||||
+ <index id="api-index-1-0" role="1.0">
|
|
||||||
+ <title>Index of new symbols in 1.0</title>
|
|
||||||
+ <xi:include href="xml/api-index-1.0.xml"><xi:fallback /></xi:include>
|
|
||||||
+ </index>
|
|
||||||
+ <!--<index id="deprecated-api-index" role="deprecated">
|
|
||||||
+ <title>Index of deprecated API</title>
|
|
||||||
+ <xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
|
|
||||||
+ </index>-->
|
|
||||||
+ <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
|
|
||||||
+</book>
|
|
||||||
diff --git a/doc/reference/libical-glib/libical-glib-docs.xml.in b/doc/reference/libical-glib/libical-glib-docs.xml.in
|
|
||||||
deleted file mode 100644
|
|
||||||
index b202e19..0000000
|
|
||||||
--- a/doc/reference/libical-glib/libical-glib-docs.xml.in
|
|
||||||
+++ /dev/null
|
|
||||||
@@ -1,80 +0,0 @@
|
|
||||||
-<?xml version="1.0"?>
|
|
||||||
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
|
||||||
- "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
|
|
||||||
-[
|
|
||||||
- <!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
|
|
||||||
-]>
|
|
||||||
-<book id="index">
|
|
||||||
- <bookinfo>
|
|
||||||
- <title>libical-glib Reference Manual</title>
|
|
||||||
- <releaseinfo>
|
|
||||||
- for libical-glib @LIBICAL_LIB_VERSION_STRING@.
|
|
||||||
- </releaseinfo>
|
|
||||||
- </bookinfo>
|
|
||||||
-
|
|
||||||
- <chapter>
|
|
||||||
- <title>API Reference</title>
|
|
||||||
- <xi:include href="xml/i-cal-array.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-attach.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-comp-iter.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-component.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-datetimeperiod-type.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-derived-parameter.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-derived-property.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-derived-value.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-duration-type.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-enums.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-error.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-geo-type.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-langbind.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-memory.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-mime.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-object.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-parameter.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-parser.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-period-type.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-property.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-recur.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-recur-iterator.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-recurrence-type.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-reqstat-type.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-restriction.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-time.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-time-span.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-timetype.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-timezone.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-timezone-phase.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-timezonetype.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-trigger-type.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-unknowntokenhandling.xml"/>
|
|
||||||
- <xi:include href="xml/i-cal-value.xml"/>
|
|
||||||
-
|
|
||||||
- </chapter>
|
|
||||||
- <!-- enable this when you use gobject types
|
|
||||||
- <chapter id="object-tree">
|
|
||||||
- <title>Object Hierarchy</title>
|
|
||||||
- <xi:include href="xml/tree_index.sgml"/>
|
|
||||||
- </chapter>
|
|
||||||
- -->
|
|
||||||
- <index id="api-index-full">
|
|
||||||
- <title>API Index</title>
|
|
||||||
- <xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
|
|
||||||
- </index>
|
|
||||||
- <index id="api-index-3-0" role="3.0">
|
|
||||||
- <title>Index of new symbols in 3.0</title>
|
|
||||||
- <xi:include href="xml/api-index-3.0.xml"><xi:fallback /></xi:include>
|
|
||||||
- </index>
|
|
||||||
- <index id="api-index-2-0" role="2.0">
|
|
||||||
- <title>Index of new symbols in 2.0</title>
|
|
||||||
- <xi:include href="xml/api-index-2.0.xml"><xi:fallback /></xi:include>
|
|
||||||
- </index>
|
|
||||||
- <index id="api-index-1-0" role="1.0">
|
|
||||||
- <title>Index of new symbols in 1.0</title>
|
|
||||||
- <xi:include href="xml/api-index-1.0.xml"><xi:fallback /></xi:include>
|
|
||||||
- </index>
|
|
||||||
- <!--<index id="deprecated-api-index" role="deprecated">
|
|
||||||
- <title>Index of deprecated API</title>
|
|
||||||
- <xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
|
|
||||||
- </index>-->
|
|
||||||
- <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
|
|
||||||
-</book>
|
|
||||||
--
|
|
||||||
1.8.3.1
|
|
||||||
|
|
||||||
16
libical.spec
16
libical.spec
@ -1,6 +1,6 @@
|
|||||||
Name: libical
|
Name: libical
|
||||||
Version: 3.0.4
|
Version: 3.0.8
|
||||||
Release: 3
|
Release: 1
|
||||||
Summary: An Open Source implementation of the iCalendar protocols and protocol data formats.
|
Summary: An Open Source implementation of the iCalendar protocols and protocol data formats.
|
||||||
License: LGPLv2 or MPLv2.0
|
License: LGPLv2 or MPLv2.0
|
||||||
URL: https://libical.github.io/libical/
|
URL: https://libical.github.io/libical/
|
||||||
@ -13,11 +13,7 @@ Requires: tzdata
|
|||||||
Provides: libical-glib = %{version}-%{release}
|
Provides: libical-glib = %{version}-%{release}
|
||||||
Obsoletes: libical-glib < %{version}-%{release}
|
Obsoletes: libical-glib < %{version}-%{release}
|
||||||
|
|
||||||
Patch6001: libical-bugfix-Cap-the-number-of-parameters.patch
|
Patch0: libical-bugfix-timeout-found-by-fuzzer.patch
|
||||||
Patch6002: libical-bugfix-timeout-found-by-fuzzer.patch
|
|
||||||
Patch6003: libical-bugfix-Reset-the-parser-level-to-0.patch
|
|
||||||
Patch6004: libical-bugfix-attempt-to-make-Coverity-happy.patch
|
|
||||||
Patch6005: libical-glib-documentation-doesn-t-go-through-gtkdoc.patch
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Libical is an open source implementation of the IETF's iCalendar calendaring
|
Libical is an open source implementation of the IETF's iCalendar calendaring
|
||||||
@ -80,6 +76,12 @@ make test ARGS="-V" -C %{_target_platform}
|
|||||||
%{_datadir}/gtk-doc/html/%{name}-glib
|
%{_datadir}/gtk-doc/html/%{name}-glib
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Jul 22 2020 zhangxingliang <zhangxingliang3@huawei.com> - 3.0.8-1
|
||||||
|
- Type:update
|
||||||
|
- Id:NA
|
||||||
|
- SUG:NA
|
||||||
|
- DESC:update to 3.0.8
|
||||||
|
|
||||||
* Sun Jun 28 2020 hanzhijun <hanzhijun1@huawei.com> - 3.0.4-3
|
* Sun Jun 28 2020 hanzhijun <hanzhijun1@huawei.com> - 3.0.4-3
|
||||||
- Type:bugfix
|
- Type:bugfix
|
||||||
- Id:NA
|
- Id:NA
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user