Skip to content
Commits on Source (28)
......@@ -2,7 +2,7 @@ stages:
- build
- deploy
image: registry.gitlab.gnome.org/gnome/gobject-introspection:v10
image: registry.gitlab.gnome.org/gnome/gobject-introspection:v11
cache:
paths:
......@@ -71,7 +71,7 @@ fedora-x86_64-meson:
- public
fedora-x86_64-subprojects:
image: registry.gitlab.gnome.org/gnome/gobject-introspection:min-v3
image: registry.gitlab.gnome.org/gnome/gobject-introspection:min-v4
stage: build
variables:
CCACHE_BASEDIR: "${CI_PROJECT_DIR}"
......
FROM fedora:34
FROM fedora:36
RUN dnf -y install \
autoconf \
......@@ -51,7 +51,7 @@ RUN dnf -y install \
zlib-devel \
&& dnf clean all
RUN pip3 install meson==0.58.2
RUN pip3 install meson==0.60
ARG HOST_USER_ID=5555
ENV HOST_USER_ID ${HOST_USER_ID}
......
FROM fedora:34
FROM fedora:36
RUN dnf -y install \
flex \
......@@ -14,9 +14,10 @@ RUN dnf -y install \
python3-devel \
python3-pip \
python3-wheel \
zlib-devel \
&& dnf clean all
RUN pip3 install meson==0.58.2
RUN pip3 install meson==0.60
ARG HOST_USER_ID=5555
ENV HOST_USER_ID ${HOST_USER_ID}
......
......@@ -16,7 +16,7 @@ fi
set -e
REGISTRY="registry.gitlab.gnome.org/gnome/gobject-introspection"
TAG="${REGISTRY}:min-v3"
TAG="${REGISTRY}:min-v4"
${CMD} build \
${format} \
......
......@@ -16,7 +16,7 @@ fi
set -e
REGISTRY="registry.gitlab.gnome.org/gnome/gobject-introspection"
TAG="${REGISTRY}:v10"
TAG="${REGISTRY}:v11"
${CMD} build \
${format} \
......
......@@ -11,14 +11,14 @@ SET PATH=%CD%;%CD%\win_flex_bison;%PATH%
SET PKG_CONFIG=%CD%\pkg-config.exe
SET PKG_CONFIG_PATH=%CD%\_build\meson-uninstalled
pip3 install --upgrade --user meson==0.58.2 || goto :error
pip3 install --upgrade --user meson==0.60 || goto :error
meson subprojects download glib
meson wrap promote subprojects\glib\subprojects\pcre.wrap
meson setup _build || goto :error
meson compile -C _build || goto :error
meson test -C _build --suite=gobject-introspection || goto :error
::meson test -C _build --suite=gobject-introspection || goto :error
goto :EOF
:error
......
......@@ -23,23 +23,31 @@ pacman --noconfirm -S --needed \
mingw-w64-$MSYS2_ARCH-libffi \
mingw-w64-$MSYS2_ARCH-pkg-config \
mingw-w64-$MSYS2_ARCH-cairo \
mingw-w64-$MSYS2_ARCH-pcre \
mingw-w64-$MSYS2_ARCH-pcre2 \
mingw-w64-$MSYS2_ARCH-zlib \
mingw-w64-$MSYS2_ARCH-gettext
export CCACHE_BASEDIR="${CI_PROJECT_DIR}"
export CCACHE_DIR="${CCACHE_BASEDIR}/_ccache"
pip3 install --upgrade --user meson==0.58.2 flake8 mypy==0.931 types-Markdown
pip3 install --upgrade --user meson==0.60 flake8 mypy==0.931 types-Markdown
export PATH="$HOME/.local/bin:$PATH"
export CFLAGS="-Werror"
meson -Dcairo=enabled -Ddoctool=enabled --buildtype debug _build
cd _build
ninja
meson test --print-errorlogs --suite=gobject-introspection --no-suite=glib
cd ..
meson setup \
-Dwerror=true \
-Dglib:werror=false \
-Dcairo=enabled \
-Ddoctool=enabled \
--buildtype debug \
_build
meson compile -C _build
meson test \
--print-errorlogs \
--suite=gobject-introspection \
--no-suite=glib \
-C _build
python3 -m flake8 --count
python3 -m mypy _build
1.73.0 - 2022-07-13
-------------------
* Update the GIR data for GLib, GObject, GModule, and GIO
* scanner: Support pre-processor macros with zero arguments [Philip Withnall]
* scanner: Support ISO C varargs in macros [Philip Withnall]
* Fix subproject build [Andoni Morales Alastruey]
1.72.0 - 2022-03-18
-------------------
......
......@@ -471,7 +471,7 @@ grammar {
}
TransferOwnership =
## attributes used by many elements for the transfer of ownership, with for example, a returned value. "none" if the recipient does not own the value, "container" if the recipient owns the container but not the value (for arrays or lists for example) , "full" the recipient owns the entire value. For details, see https://wiki.gnome.org/Projects/GObjectIntrospection/Annotations#Memory_and_lifecycle_management
## attributes used by many elements for the transfer of ownership, with for example, a returned value. "none" if the recipient does not own the value, "container" if the recipient owns the container but not the value (for arrays or lists for example) , "full" the recipient owns the entire value. For details, see https://gi.readthedocs.io/en/latest/annotations/giannotations.html#memory-and-lifecycle-management
attribute transfer-ownership { "none" | "container" | "full" }
Constructor =
......@@ -507,7 +507,7 @@ grammar {
empty
}
# Refer to https://wiki.gnome.org/Projects/GObjectIntrospection/Annotations#Support_for_GObject_closures
# Refer to https://gi.readthedocs.io/en/latest/annotations/giannotations.html#support-for-gobject-closures
Callable.params =
## parameters element of a callable, that is in general parameters of a function or similar
element parameters {
......
......@@ -20,7 +20,7 @@ main (void)
base_info = g_irepository_find_by_name (repository, "GLib", "assertion_message");
if (!base_info)
{
g_error ("ERROR: %s\n", "Could not find GLib.warn_message");
g_error ("ERROR: %s\n", "Could not find GLib.assertion_message");
return 1;
}
......
......@@ -7,6 +7,7 @@
c:symbol-prefixes="fc">
<record name="Pattern" c:type="FcPattern"/>
<record name="CharSet" c:type="FcCharSet"/>
<record name="Config" c:type="FcConfig"/>
<function name="init" c:identifier="FcInit">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
......
......@@ -1681,7 +1681,20 @@
* ways indicated here will be rejected unless the application
* overrides the default via #GDtlsConnection::accept-certificate.
*
* GLib guarantees that if certificate verification fails, at least one
* flag will be set, but it does not guarantee that all possible flags
* will be set. Accordingly, you may not safely decide to ignore any
* particular type of error. For example, it would be incorrect to mask
* %G_TLS_CERTIFICATE_EXPIRED if you want to allow expired certificates,
* because this could potentially be the only error flag set even if
* other problems exist with the certificate. Therefore, there is no
* safe way to use this property. This is not a horrible problem,
* though, because you should not be attempting to ignore validation
* errors anyway. If you really must ignore TLS certificate errors,
* connect to #GDtlsConnection::accept-certificate.
*
* Since: 2.48
* Deprecated: 2.74: Do not attempt to ignore validation errors.
*/
 
 
......@@ -2250,6 +2263,15 @@
*/
 
 
/**
* GListStore:n-items:
*
* The number of items contained in this list store.
*
* Since: 2.74
*/
/**
* GMemoryMonitor:
*
......@@ -3381,7 +3403,7 @@
 
 
/**
* GSimpleProxyResolver:default-proxy:
* GSimpleProxyResolver:default-proxy: (nullable)
*
* The default proxy URI that will be used for any URI that doesn't
* match #GSimpleProxyResolver:ignore-hosts, and doesn't match any
......@@ -6739,6 +6761,8 @@
* - g_file_new_for_uri() if you have a URI.
* - g_file_new_for_commandline_arg() for a command line argument.
* - g_file_new_tmp() to create a temporary file from a template.
* - g_file_new_tmp_async() to asynchronously create a temporary file.
* - g_file_new_tmp_dir_async() to asynchronously create a temporary directory.
* - g_file_parse_name() from a UTF-8 string gotten from g_file_get_parse_name().
* - g_file_new_build_filename() to create a file from path elements.
*
......@@ -7420,6 +7444,21 @@
* implementation, but typically it will be from the thread that owns
* the [thread-default main context][g-main-context-push-thread-default]
* in effect at the time that the model was created.
*
* Over time, it has established itself as good practice for listmodel
* implementations to provide properties `item-type` and `n-items` to
* ease working with them. While it is not required, it is recommended
* that implementations provide these two properties. They should return
* the values of g_list_model_get_item_type() and g_list_model_get_n_items()
* respectively and be defined as such:
* |[<!-- language="C" -->
* properties[PROP_ITEM_TYPE] =
* g_param_spec_gtype ("item-type", "", "", G_TYPE_OBJECT,
* G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
* properties[PROP_N_ITEMS] =
* g_param_spec_uint ("n-items", "", "", 0, G_MAXUINT, 0,
* G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
* ]|
*/
 
 
......@@ -7981,10 +8020,10 @@
* some systems).
*
* When in “Low Power” mode, it is recommended that applications:
* - disabling automatic downloads
* - disable automatic downloads;
* - reduce the rate of refresh from online sources such as calendar or
* email synchronisation
* - if the application has expensive visual effects, reduce them
* email synchronisation;
* - reduce the use of expensive visual effects.
*
* It is also likely that OS components providing services to applications will
* lower their own background activity, for the sake of the system.
......@@ -10340,9 +10379,11 @@
* the %G_SOCKET_FAMILY_UNIX family by using g_socket_send_message()
* and received using g_socket_receive_message().
*
* Note that `<gio/gunixfdlist.h>` belongs to the UNIX-specific GIO
* interfaces, thus you have to use the `gio-unix-2.0.pc` pkg-config
* file when using it.
* Before 2.74, `<gio/gunixfdlist.h>` belonged to the UNIX-specific GIO
* interfaces, thus you had to use the `gio-unix-2.0.pc` pkg-config file when
* using it.
*
* Since 2.74, the API is available for Windows.
*/
 
 
......@@ -11736,6 +11777,37 @@
*/
 
 
/**
* g_app_info_get_default_for_type_async:
* @content_type: the content type to find a #GAppInfo for
* @must_support_uris: if %TRUE, the #GAppInfo is expected to
* support URIs
* @cancellable: optional #GCancellable object, %NULL to ignore
* @callback: (nullable): a #GAsyncReadyCallback to call when the request is done
* @user_data: (nullable): data to pass to @callback
*
* Asynchronously gets the default #GAppInfo for a given content type.
*
* Since: 2.74
*/
/**
* g_app_info_get_default_for_type_finish:
* @result: a #GAsyncResult
* @error: (nullable): a #GError
*
* Finishes a default #GAppInfo lookup started by
* g_app_info_get_default_for_type_async().
*
* If no #GAppInfo is found, then @error will be set to %G_IO_ERROR_NOT_FOUND.
*
* Returns: (transfer full): #GAppInfo for given @content_type or
* %NULL on error.
* Since: 2.74
*/
/**
* g_app_info_get_default_for_uri_scheme:
* @uri_scheme: a string containing a URI scheme.
......@@ -11750,6 +11822,38 @@
*/
 
 
/**
* g_app_info_get_default_for_uri_scheme_async:
* @uri_scheme: a string containing a URI scheme.
* @cancellable: optional #GCancellable object, %NULL to ignore
* @callback: (nullable): a #GAsyncReadyCallback to call when the request is done
* @user_data: (nullable): data to pass to @callback
*
* Asynchronously gets the default application for handling URIs with
* the given URI scheme. A URI scheme is the initial part
* of the URI, up to but not including the ':', e.g. "http",
* "ftp" or "sip".
*
* Since: 2.74
*/
/**
* g_app_info_get_default_for_uri_scheme_finish:
* @result: a #GAsyncResult
* @error: (nullable): a #GError
*
* Finishes a default #GAppInfo lookup started by
* g_app_info_get_default_for_uri_scheme_async().
*
* If no #GAppInfo is found, then @error will be set to %G_IO_ERROR_NOT_FOUND.
*
* Returns: (transfer full): #GAppInfo for given @uri_scheme or
* %NULL on error.
* Since: 2.74
*/
/**
* g_app_info_get_description:
* @appinfo: a #GAppInfo.
......@@ -21244,8 +21348,13 @@
*
* Gets @conn's validation flags
*
* This function does not work as originally designed and is impossible
* to use correctly. See #GDtlsClientConnection:validation-flags for more
* information.
*
* Returns: the validation flags
* Since: 2.48
* Deprecated: 2.74: Do not attempt to ignore validation errors.
*/
 
 
......@@ -21287,7 +21396,12 @@
* checks performed when validating a server certificate. By default,
* %G_TLS_CERTIFICATE_VALIDATE_ALL is used.
*
* This function does not work as originally designed and is impossible
* to use correctly. See #GDtlsClientConnection:validation-flags for more
* information.
*
* Since: 2.48
* Deprecated: 2.74: Do not attempt to ignore validation errors.
*/
 
 
......@@ -23369,6 +23483,9 @@
* %G_FILE_ATTRIBUTE_TIME_ACCESS_USEC is provided, the resulting #GDateTime
* will have microsecond precision.
*
* If nanosecond precision is needed, %G_FILE_ATTRIBUTE_TIME_ACCESS_NSEC must
* be queried separately using g_file_info_get_attribute_uint32().
*
* Returns: (transfer full) (nullable): access time, or %NULL if unknown
* Since: 2.70
*/
......@@ -23568,6 +23685,9 @@
* %G_FILE_ATTRIBUTE_TIME_CREATED_USEC is provided, the resulting #GDateTime
* will have microsecond precision.
*
* If nanosecond precision is needed, %G_FILE_ATTRIBUTE_TIME_CREATED_NSEC must
* be queried separately using g_file_info_get_attribute_uint32().
*
* Returns: (transfer full) (nullable): creation time, or %NULL if unknown
* Since: 2.70
*/
......@@ -23679,6 +23799,9 @@
* %G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC is provided, the resulting #GDateTime
* will have microsecond precision.
*
* If nanosecond precision is needed, %G_FILE_ATTRIBUTE_TIME_MODIFIED_NSEC must
* be queried separately using g_file_info_get_attribute_uint32().
*
* Returns: (transfer full) (nullable): modification time, or %NULL if unknown
* Since: 2.62
*/
......@@ -23818,6 +23941,8 @@
* %G_FILE_ATTRIBUTE_TIME_ACCESS_USEC attributes in the file info to the
* given date/time value.
*
* %G_FILE_ATTRIBUTE_TIME_ACCESS_NSEC will be cleared.
*
* Since: 2.70
*/
 
......@@ -23982,6 +24107,8 @@
* %G_FILE_ATTRIBUTE_TIME_CREATED_USEC attributes in the file info to the
* given date/time value.
*
* %G_FILE_ATTRIBUTE_TIME_CREATED_NSEC will be cleared.
*
* Since: 2.70
*/
 
......@@ -24055,6 +24182,8 @@
* %G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC attributes in the file info to the
* given date/time value.
*
* %G_FILE_ATTRIBUTE_TIME_MODIFIED_NSEC will be cleared.
*
* Since: 2.62
*/
 
......@@ -24068,6 +24197,8 @@
* %G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC attributes in the file info to the
* given time value.
*
* %G_FILE_ATTRIBUTE_TIME_MODIFIED_NSEC will be cleared.
*
* Deprecated: 2.62: Use g_file_info_set_modification_date_time() instead, as
* #GTimeVal is deprecated due to the year 2038 problem.
*/
......@@ -24576,6 +24707,39 @@
*/
 
 
/**
* g_file_make_symbolic_link_async: (virtual make_symbolic_link_async)
* @file: a #GFile with the name of the symlink to create
* @symlink_value: (type filename): a string with the path for the target
* of the new symlink
* @io_priority: the [I/O priority][io-priority] of the request
* @cancellable: (nullable): optional #GCancellable object,
* %NULL to ignore
* @callback: a #GAsyncReadyCallback to call
* when the request is satisfied
* @user_data: the data to pass to callback function
*
* Asynchronously creates a symbolic link named @file which contains the
* string @symlink_value.
*
* Since: 2.74
*/
/**
* g_file_make_symbolic_link_finish: (virtual make_symbolic_link_finish)
* @file: input #GFile
* @result: a #GAsyncResult
* @error: a #GError, or %NULL
*
* Finishes an asynchronous symbolic link creation, started with
* g_file_make_symbolic_link_async().
*
* Returns: %TRUE on successful directory creation, %FALSE otherwise.
* Since: 2.74
*/
/**
* g_file_measure_disk_usage:
* @file: a #GFile
......@@ -25068,6 +25232,74 @@
*/
 
 
/**
* g_file_new_tmp_async:
* @tmpl: (type filename) (nullable): Template for the file
* name, as in g_file_open_tmp(), or %NULL for a default template
* @io_priority: the [I/O priority][io-priority] of the request
* @cancellable: optional #GCancellable object, %NULL to ignore
* @callback: (nullable): a #GAsyncReadyCallback to call when the request is done
* @user_data: (nullable): data to pass to @callback
*
* Asynchronously opens a file in the preferred directory for temporary files
* (as returned by g_get_tmp_dir()) as g_file_new_tmp().
*
* @tmpl should be a string in the GLib file name encoding
* containing a sequence of six 'X' characters, and containing no
* directory components. If it is %NULL, a default template is used.
*
* Since: 2.74
*/
/**
* g_file_new_tmp_dir_async:
* @tmpl: (type filename) (nullable): Template for the file
* name, as in g_dir_make_tmp(), or %NULL for a default template
* @io_priority: the [I/O priority][io-priority] of the request
* @cancellable: optional #GCancellable object, %NULL to ignore
* @callback: (nullable): a #GAsyncReadyCallback to call when the request is done
* @user_data: (nullable): data to pass to @callback
*
* Asynchronously creates a directory in the preferred directory for
* temporary files (as returned by g_get_tmp_dir()) as g_dir_make_tmp().
*
* @tmpl should be a string in the GLib file name encoding
* containing a sequence of six 'X' characters, and containing no
* directory components. If it is %NULL, a default template is used.
*
* Since: 2.74
*/
/**
* g_file_new_tmp_dir_finish:
* @result: a #GAsyncResult
* @error: a #GError, or %NULL
*
* Finishes a temporary directory creation started by
* g_file_new_tmp_dir_async().
*
* Returns: (transfer full): a new #GFile.
* Free the returned object with g_object_unref().
* Since: 2.74
*/
/**
* g_file_new_tmp_finish:
* @result: a #GAsyncResult
* @iostream: (out) (not nullable) (transfer full): on return, a #GFileIOStream for the created file
* @error: a #GError, or %NULL
*
* Finishes a temporary file creation started by g_file_new_tmp_async().
*
* Returns: (transfer full): a new #GFile.
* Free the returned object with g_object_unref().
* Since: 2.74
*/
/**
* g_file_open_readwrite:
* @file: #GFile to open
......@@ -27630,6 +27862,17 @@
*/
 
 
/**
* g_io_error_from_file_error:
* @file_error: a #GFileError.
*
* Converts #GFileError error codes into GIO error codes.
*
* Returns: #GIOErrorEnum value for the given #GFileError error value.
* Since: 2.74
*/
/**
* g_io_error_from_win32_error:
* @error_code: Windows error number.
......@@ -28398,7 +28641,7 @@
* @position: (out) (optional): the first position of @item, if it was found.
*
* Looks up the given @item in the list store by looping over the items and
* comparing them with @compare_func until the first occurrence of @item which
* comparing them with @equal_func until the first occurrence of @item which
* matches. If @item was not found, then @position will not be set, and this
* method will return %FALSE.
*
......@@ -28408,6 +28651,23 @@
*/
 
 
/**
* g_list_store_find_with_equal_func_full:
* @store: a #GListStore
* @item: (type GObject): an item
* @equal_func: (scope call): A custom equality check function
* @user_data: (closure): user data for @equal_func
* @position: (out) (optional): the first position of @item, if it was found.
*
* Like g_list_store_find_with_equal_func() but with an additional @user_data
* that is passed to @equal_func.
*
* Returns: Whether @store contains @item. If it was found, @position will be
* set to the position where @item occurred for the first time.
* Since: 2.74
*/
/**
* g_list_store_insert:
* @store: a #GListStore
......@@ -35543,7 +35803,7 @@
/**
* g_simple_proxy_resolver_set_default_proxy:
* @resolver: a #GSimpleProxyResolver
* @default_proxy: the default proxy to use
* @default_proxy: (nullable): the default proxy to use
*
* Sets the default proxy on @resolver, to be used for any URIs that
* don't match #GSimpleProxyResolver:ignore-hosts or a proxy set
......@@ -35634,7 +35894,7 @@
* internal errors (other than @cancellable being triggered) will be
* ignored.
*
* Returns: (transfer full): a #GSocketAddress (owned by the caller), or %NULL on
* Returns: (transfer full) (nullable): a #GSocketAddress (owned by the caller), or %NULL on
* error (in which case *@error will be set) or if there are no
* more addresses.
*/
......@@ -35667,7 +35927,7 @@
* g_socket_address_enumerator_next() for more information about
* error handling.
*
* Returns: (transfer full): a #GSocketAddress (owned by the caller), or %NULL on
* Returns: (transfer full) (nullable): a #GSocketAddress (owned by the caller), or %NULL on
* error (in which case *@error will be set) or if there are no
* more addresses.
*/
......@@ -40584,6 +40844,8 @@
* check a certificate against a CA that is not part of the system
* CA database.
*
* If @cert is valid, %G_TLS_CERTIFICATE_FLAGS_NONE is returned.
*
* If @identity is not %NULL, @cert's name(s) will be compared against
* it, and %G_TLS_CERTIFICATE_BAD_IDENTITY will be set in the return
* value if it does not match. If @identity is %NULL, that bit will
......@@ -41131,7 +41393,7 @@
* #GTlsClientConnection:validation-flags).
*
* There are nonintuitive security implications when using a non-default
* database. See #GDtlsConnection:database for details.
* database. See #GTlsConnection:database for details.
*
* Since: 2.30
*/
This diff is collapsed.
......@@ -2879,9 +2879,11 @@
* class initialization:
*
* |[<!-- language="C" -->
* enum {
* PROP_0, PROP_FOO, PROP_BAR, N_PROPERTIES
* };
* typedef enum {
* PROP_FOO = 1,
* PROP_BAR,
* N_PROPERTIES
* } MyObjectProperty;
*
* static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, };
*
......@@ -2894,17 +2896,17 @@
* g_param_spec_int ("foo", "Foo", "Foo",
* -1, G_MAXINT,
* 0,
* G_PARAM_READWRITE);
* G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
*
* obj_properties[PROP_BAR] =
* g_param_spec_string ("bar", "Bar", "Bar",
* NULL,
* G_PARAM_READWRITE);
* G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
*
* gobject_class->set_property = my_object_set_property;
* gobject_class->get_property = my_object_get_property;
* g_object_class_install_properties (gobject_class,
* N_PROPERTIES,
* G_N_ELEMENTS (obj_properties),
* obj_properties);
* }
* ]|
......@@ -2998,8 +3000,8 @@
*
* The signal specs expected by this function have the form
* "modifier::signal_name", where modifier can be one of the following:
* - signal: equivalent to g_signal_connect_data (..., NULL, 0)
* - object-signal, object_signal: equivalent to g_signal_connect_object (..., 0)
* - signal: equivalent to g_signal_connect_data (..., NULL, G_CONNECT_DEFAULT)
* - object-signal, object_signal: equivalent to g_signal_connect_object (..., G_CONNECT_DEFAULT)
* - swapped-signal, swapped_signal: equivalent to g_signal_connect_data (..., NULL, G_CONNECT_SWAPPED)
* - swapped_object_signal, swapped-object-signal: equivalent to g_signal_connect_object (..., G_CONNECT_SWAPPED)
* - signal_after, signal-after: equivalent to g_signal_connect_data (..., NULL, G_CONNECT_AFTER)
......@@ -3451,12 +3453,11 @@
* g_object_class_install_property() inside a static array, e.g.:
*
* |[<!-- language="C" -->
* enum
* typedef enum
* {
* PROP_0,
* PROP_FOO,
* PROP_FOO = 1,
* PROP_LAST
* };
* } MyObjectProperty;
*
* static GParamSpec *properties[PROP_LAST];
*
......@@ -3466,7 +3467,7 @@
* properties[PROP_FOO] = g_param_spec_int ("foo", "Foo", "The foo",
* 0, 100,
* 50,
* G_PARAM_READWRITE);
* G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
* g_object_class_install_property (gobject_class,
* PROP_FOO,
* properties[PROP_FOO]);
......@@ -4675,6 +4676,20 @@
*/
/**
* g_param_value_is_valid:
* @pspec: a valid #GParamSpec
* @value: a #GValue of correct type for @pspec
*
* Return whether the contents of @value comply with the specifications
* set out by @pspec.
*
* Returns: whether the contents of @value comply with the specifications
* set out by @pspec.
* Since: 2.74
*/
/**
* g_param_value_set_default:
* @pspec: a valid #GParamSpec
......@@ -5016,6 +5031,22 @@
*/
/**
* g_signal_group_connect_closure:
* @self: a #GSignalGroup
* @detailed_signal: a string of the form `signal-name` with optional `::signal-detail`
* @closure: (not nullable): the closure to connect.
* @after: whether the handler should be called before or after the
* default handler of the signal.
*
* Connects @closure to the signal @detailed_signal on #GSignalGroup:target.
*
* You cannot connect a signal handler after #GSignalGroup:target has been set.
*
* Since: 2.74
*/
/**
* g_signal_group_connect_data:
* @self: a #GSignalGroup
......
gir_files = [
'DBus-1.0.gir',
'DBusGLib-1.0.gir',
'fontconfig-2.0.gir',
'freetype2-2.0.gir',
'GL-1.0.gir',
'libxml2-2.0.gir',
'Vulkan-1.0.gir',
'xft-2.0.gir',
'xlib-2.0.gir',
'xfixes-4.0.gir',
'xrandr-1.3.gir',
'win32-1.0.gir',
]
# Copy gir files to build directory to have them all in a single place.
# This is needed when gobject-introspection is a subproject because Meson
# will add --includedir pointing to build directory automatically.
foreach gir : gir_files
configure_file(input: gir, output: gir, copy: true)
endforeach
cairo_conf = configuration_data()
if get_option('cairo_libname') != ''
cairo_library_name = get_option('cairo_libname')
......@@ -21,22 +42,7 @@ cairo_gir = configure_file(
output: 'cairo-1.0.gir',
configuration: cairo_conf,
)
gir_files = [
cairo_gir,
'DBus-1.0.gir',
'DBusGLib-1.0.gir',
'fontconfig-2.0.gir',
'freetype2-2.0.gir',
'GL-1.0.gir',
'libxml2-2.0.gir',
'Vulkan-1.0.gir',
'xft-2.0.gir',
'xlib-2.0.gir',
'xfixes-4.0.gir',
'xrandr-1.3.gir',
'win32-1.0.gir',
]
gir_files += [cairo_gir]
typelibdir = join_paths(get_option('libdir'), 'girepository-1.0')
install_data(gir_files, install_dir: girdir)
......@@ -107,7 +113,7 @@ if dep_type == 'pkgconfig'
glib_files += join_paths(glib_incdir, 'glib-unix.h')
endif
# Parse glob to get installed header list
ret = run_command(python, '-c', globber.format(join_paths(glib_incdir, 'glib', '*.h')))
ret = run_command(python, '-c', globber.format(join_paths(glib_incdir, 'glib', '*.h')), check: true)
if ret.returncode() != 0
error('Failed to get glib header list')
endif
......@@ -115,7 +121,7 @@ if dep_type == 'pkgconfig'
# Get a list of all source files
glib_srcdir = get_option('glib_src_dir')
if glib_srcdir != ''
ret = run_command(python, '-c', globber.format(join_paths(glib_srcdir, 'glib', '*.c')))
ret = run_command(python, '-c', globber.format(join_paths(glib_srcdir, 'glib', '*.c')), check: true)
if ret.returncode() != 0
error('Failed to get glib source list')
endif
......@@ -133,20 +139,20 @@ elif dep_type == 'internal'
# We know exactly what headers will be installed, so just fetch that
glib_subproject = subproject('glib')
glibproj_sourcedir = join_paths(meson.project_source_root(), subprojdir, 'glib')
glibproj_builddir = join_paths(meson.project_build_root(), subprojdir, 'glib')
glibproj_sourcedir = join_paths(meson.global_source_root(), subprojdir, 'glib')
glibproj_builddir = join_paths(meson.global_build_root(), subprojdir, 'glib')
glib_files += join_paths(glibproj_sourcedir, 'gobject', 'glib-types.h')
glib_files += glib_subproject.get_variable('glib_types_h')
# Generated files, relative to the build directory
glib_files += [
join_paths(glibproj_builddir, 'glib', 'glibconfig.h'),
glib_subproject.get_variable('glibconfig_h'),
glib_subproject.get_variable('glib_enumtypes_h'),
]
if giounix_dep.found()
glib_files += [
join_paths(glibproj_sourcedir, 'glib', 'glib-unix.h'),
glib_subproject.get_variable('glib_unix_h')
]
endif
......@@ -184,13 +190,13 @@ elif dep_type == 'internal'
# XXX: We need include paths to all glib dependencies too. We assume that the
# dependencies are only libffi and proxy-libintl, and that they are used as
# subprojects. In the worst case we add paths to non-existent directories.
ffi_incdir = join_paths(meson.project_build_root(), subprojdir, 'libffi', 'include')
ffi_incdir = join_paths(meson.global_build_root(), subprojdir, 'libffi', 'include')
glib_includes += ['-I' + ffi_incdir]
intl_incdir = join_paths(meson.project_source_root(), subprojdir, 'proxy-libintl')
intl_incdir = join_paths(meson.global_source_root(), subprojdir, 'proxy-libintl')
glib_includes += ['-I' + intl_incdir]
ffi_libdir = join_paths(meson.project_build_root(), subprojdir, 'libffi', 'src')
intl_libdir = join_paths(meson.project_build_root(), subprojdir, 'proxy-libintl')
ffi_libdir = join_paths(meson.global_build_root(), subprojdir, 'libffi', 'src')
intl_libdir = join_paths(meson.global_build_root(), subprojdir, 'proxy-libintl')
glib_libpaths = [
'-L' + ffi_libdir,
'-L' + intl_libdir,
......@@ -257,13 +263,13 @@ gobject_command = scanner_command + [
if dep_type == 'pkgconfig'
gobject_command += ['--external-library', '--pkg=gobject-2.0']
# Get the installed header list
ret = run_command(python, '-c', globber.format(join_paths(glib_incdir, 'gobject', '*.h')))
ret = run_command(python, '-c', globber.format(join_paths(glib_incdir, 'gobject', '*.h')), check: true)
if ret.returncode() != 0
error('Failed to get gobject header list')
endif
gobject_headers = ret.stdout().strip().split('\n')
if glib_srcdir != ''
ret = run_command(python, '-c', globber.format(join_paths(glib_srcdir, 'gobject', '*.c')))
ret = run_command(python, '-c', globber.format(join_paths(glib_srcdir, 'gobject', '*.c')), check: true)
if ret.returncode() != 0
error('Failed to get gobject source list')
endif
......@@ -332,8 +338,8 @@ else
gmodule_command += ['--pkg-export=gmodule-2.0']
gmodule_command += glib_libpaths
gmodule_files += [
join_paths(glibproj_sourcedir, 'gmodule', 'gmodule.h'),
join_paths(glibproj_sourcedir, 'gmodule', 'gmodule.c'),
glib_subproject.get_variable('gmodule_h'),
glib_subproject.get_variable('gmodule_c'),
glib_subproject.get_variable('gmoduleconf_h'),
]
gmodule_gir_dep = glib_subproject.get_variable('libgmodule')
......@@ -373,7 +379,7 @@ gio_command = scanner_command + [
if dep_type == 'pkgconfig'
gio_command += ['--external-library', '--pkg=gio-2.0']
# Get the installed header list
ret = run_command(python, '-c', globber.format(join_paths(glib_incdir, 'gio', '*.h')))
ret = run_command(python, '-c', globber.format(join_paths(glib_incdir, 'gio', '*.h')), check: true)
if ret.returncode() != 0
error('Failed to get gio header list')
endif
......@@ -382,7 +388,7 @@ if dep_type == 'pkgconfig'
# probably fine since it matches what Autotools does. We are more exact in
# the subproject case.
if glib_srcdir != ''
ret = run_command(python, '-c', globber.format(join_paths(glib_srcdir, 'gio', '*.c')))
ret = run_command(python, '-c', globber.format(join_paths(glib_srcdir, 'gio', '*.c')), check: true)
if ret.returncode() != 0
error('Failed to get gio source list')
endif
......@@ -414,7 +420,7 @@ if giounix_dep.found()
gio_command += ['--pkg=gio-unix-2.0']
giounix_includedir = get_option('gi_cross_pkgconfig_sysroot_path') + join_paths(giounix_dep.get_variable(pkgconfig: 'includedir'), 'gio-unix-2.0')
# Get the installed gio-unix header list
ret = run_command(python, '-c', globber.format(join_paths(giounix_includedir, 'gio', '*.h')))
ret = run_command(python, '-c', globber.format(join_paths(giounix_includedir, 'gio', '*.h')), check: true)
if ret.returncode() != 0
error('Failed to get gio-unix header list')
endif
......
......@@ -574,8 +574,8 @@ gi_type_info_extract_ffi_return_value (GITypeInfo *return_info,
g_base_info_unref (interface_info);
}
return gi_type_tag_extract_ffi_return_value (return_tag, interface_type,
ffi_value, arg);
gi_type_tag_extract_ffi_return_value (return_tag, interface_type,
ffi_value, arg);
}
/**
......
......@@ -470,8 +470,8 @@ g_type_info_argument_from_hash_pointer (GITypeInfo *info,
GIArgument *arg)
{
GITypeTag storage_type = g_type_info_get_storage_type (info);
return gi_type_tag_argument_from_hash_pointer (storage_type, hash_pointer,
arg);
gi_type_tag_argument_from_hash_pointer (storage_type, hash_pointer,
arg);
}
/**
......
......@@ -307,6 +307,7 @@ set_or_merge_base_type (GISourceType *type,
%type <symbol> parameter_declaration
%type <symbol> struct_declarator
%type <list> enumerator_list
%type <list> function_macro_argument_list
%type <list> identifier_list
%type <list> init_declarator_list
%type <list> parameter_list
......@@ -1513,8 +1514,28 @@ object_macro
}
;
function_macro_argument_list
: identifier
{
GISourceSymbol *sym = gi_source_symbol_new (CSYMBOL_TYPE_INVALID, scanner->current_file, lineno);
sym->ident = $1;
$$ = g_list_append (NULL, sym);
}
| ELLIPSIS
{
GISourceSymbol *sym = gi_source_symbol_new (CSYMBOL_TYPE_ELLIPSIS, scanner->current_file, lineno);
$$ = g_list_append (NULL, sym);
}
| identifier ',' function_macro_argument_list
{
GISourceSymbol *sym = gi_source_symbol_new (CSYMBOL_TYPE_INVALID, scanner->current_file, lineno);
sym->ident = $1;
$$ = g_list_prepend ($3, sym);
}
;
function_macro_define
: function_macro '(' identifier_list ')'
: function_macro '(' function_macro_argument_list ')'
{
GISourceSymbol *sym = gi_source_symbol_new (CSYMBOL_TYPE_FUNCTION_MACRO, scanner->current_file, lineno);
GISourceType *func = gi_source_function_new ();
......@@ -1524,6 +1545,16 @@ function_macro_define
gi_source_scanner_add_symbol (scanner, sym);
gi_source_symbol_unref (sym);
}
| function_macro '(' ')'
{
GISourceSymbol *sym = gi_source_symbol_new (CSYMBOL_TYPE_FUNCTION_MACRO, scanner->current_file, lineno);
GISourceType *func = gi_source_function_new ();
sym->ident = g_strdup ($1);
func->child_list = NULL;
gi_source_symbol_merge_type (sym, func);
gi_source_scanner_add_symbol (scanner, sym);
gi_source_symbol_unref (sym);
}
;
object_macro_define
......
project('gobject-introspection', 'c',
version: '1.72.0',
meson_version: '>= 0.58.2',
version: '1.73.0',
meson_version: '>= 0.60.0',
default_options: [
'warning_level=2',
'buildtype=debugoptimized',
......@@ -124,9 +124,7 @@ else
endif
# FIXME: Always bumped to match our version
#glib_version = '>=2.@0@.@1@'.format(gi_versions[1], gi_versions[2])
glib_version = '>= 2.58.0'
glib_version = '>=2.@0@.@1@'.format(gi_versions[1], gi_versions[2])
glib_dep = dependency('glib-2.0', version : glib_version,
fallback: ['glib', 'libglib_dep'])
......@@ -200,8 +198,8 @@ with_doctool = true
if doctool_option.disabled()
with_doctool = false
else
has_mako = run_command(python, ['-c', 'import mako']).returncode() == 0
has_markdown = run_command(python, ['-c', 'import markdown']).returncode() == 0
has_mako = run_command(python, ['-c', 'import mako'], check: false).returncode() == 0
has_markdown = run_command(python, ['-c', 'import markdown'], check: false).returncode() == 0
if not has_mako or not has_markdown
if doctool_option.enabled()
error('doctool requires markdown and mako')
......@@ -290,10 +288,7 @@ pkg.generate(
# be named girepo_dep for backward compatibility with projects that where already
# using that name as fallback: dependency('gobject-introspection-1.0',
# fallback : ['gobject-introspection', 'girepo_dep'])
# FIXME: meson.override_dependency() and declare_dependency()'s variable arguments
# are new in Meson 0.54.0, older versions of Meson won't be able to use g-i as
# subproject anyway
if meson.version().version_compare('>=0.54.0') and get_option('build_introspection_data') == true
if get_option('build_introspection_data') == true
girepo_dep = declare_dependency(
sources: typelibs,
dependencies: girepo_dep,
......
[wrap-git]
directory=zlib
url=https://github.com/centricular/zlib.git
revision=meson
depth=1
[wrap-file]
directory = zlib-1.2.12
source_url = http://zlib.net/fossils/zlib-1.2.12.tar.gz
source_filename = zlib-1.2.12.tar.gz
source_hash = 91844808532e5ce316b3c010929493c0244f3d37593afd6de04f71821d5136d9
patch_filename = zlib_1.2.12-1_patch.zip
patch_url = https://wrapdb.mesonbuild.com/v2/zlib_1.2.12-1/get_patch
patch_hash = 8ec8344f3fe7b06ad4be768fd416694bc56cb4545ce78b0f1c18b3e72b3ec936
[provide]
zlib = zlib_dep