Commit Graph

21261 Commits

Author SHA1 Message Date
Sebastian Dröge
96a0f3777c Merge branch 'gsource-dispose' into 'master'
Implement a dispose function for GSource

See merge request GNOME/glib!1175
2019-12-03 12:37:22 +00:00
Sebastian Dröge
e315918f52 Minor cleanups in mainloop tests 2019-12-03 14:00:59 +02:00
Sebastian Dröge
eeb4ad8b1e Merge branch 'visibility-protected' into 'master'
build: don't check for protected visibility

See merge request GNOME/glib!1265
2019-12-03 09:44:46 +00:00
Matthew Waters
86747cea08 build: don't check for protected visibility
It's not supported on macOS' clang compiler and will fail the visibility
check and thus make the G_GNUC_INTERNAL attribute do nothing.

Compiler stderr:
 /var/folders/nt/j2v2x4wd5cl33fq27mm31mwc0000gn/T/tmpxxf2zzi_/testfile.c:13:19: error: target does not support 'protected' visibility; using 'default' [-Werror,-Wunsupported-visibility]
  __attribute__ ((visibility ("protected")))
                  ^
1 error generated.

Checking if "GNU C visibility attributes test" compiles: NO
2019-12-03 13:33:16 +11:00
Philip Withnall
a6c1ee22c1 gdbus-codegen: Drop DocBook warning tags from generated code
gtk-doc switched from DocBook to Markdown ages ago. There is no Markdown
equivalent for `<warning>`, so just drop it. It wasn’t adding anything
particularly valuable to the documentation.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Fixes: #1130
2019-12-02 16:48:32 +00:00
Philip Withnall
9a93fd93f0 gdbus-codegen: Remove DocBook link tags from generated code
gtk-doc long since switched to Markdown, so we shouldn’t be emitting
DocBook `<link>` tags.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Helps: #1130
2019-12-02 16:47:44 +00:00
Simon McVittie
32c84b076d Merge branch '1612-gdbus-codegen-tests' into 'master'
tests: Add tests for the gdbus-codegen executable

See merge request GNOME/glib!1262
2019-12-02 15:07:16 +00:00
Philip Withnall
41cabfaa98 tests: Add tests for the gdbus-codegen executable
Add a Python-based test wrapper for the `gdbus-codegen` executable,
similar to the existing tests for `glib-mkenums` and friends.

Add a few basic tests to begin with, but this doesn’t approach anywhere
near full coverage.

The next step is to move the existing Meson-based `gdbus-codegen` tests
from `gio/tests/meson.build` into the Python test suite.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Helps: #1612
2019-12-02 14:27:11 +00:00
Philip Withnall
8f4155c124 codegen: Require at least one interface file to be specified
Previously, running `gdbus-codegen` with no arguments would exit
successfully with no output. While technically correct, that seems
unhelpful.

Require at least one interface file to be specified, so the user gets an
error message if they don’t specify any.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2019-12-02 14:09:45 +00:00
Philip Withnall
921e6d1245 codegen: Drop gdbus-codegen version and input filename from output
It’s not particularly useful to put the gdbus-codegen version or the
name of the input file into the output from `gdbus-codegen`, and it
makes the output less reproducible. Drop it.

Also clarify the licensing.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Helps: #1612
2019-12-02 14:09:45 +00:00
Xavier Claessens
160143ae27 gtk-doc: Ensure we have recent enough version
Older versions won't produce errors, but will silently miss
documentation for a few symbols.
2019-12-01 08:25:04 -05:00
Sebastian Dröge
470f872af9 Add test for GSource finalization, disposal and recycling from dispose() 2019-11-29 21:01:57 +01:00
Sebastian Dröge
b3de0c1090 Use GSource dispose function for safely disconnecting the GCancellable source cancelled signal handler
If not doing this it might happen that the cancelled signal is emitted
between reaching a reference count of 0 and finalizing the GSource, at
which point part of the GSource is already freed and calling any GSource
functions is dangerous.

Instead do this from the dispose function. At this time the GSource is
not partially freed yet and calling any GSource API is safe as long as
we ensure that we have a strong reference to the GSource before calling
any GSource API.
2019-11-29 20:56:38 +01:00
Sebastian Dröge
be1ec9004b Add guards against invalid GSources to public GSource API
Especially check for a valid reference count. This is possible now in
all cases because of the addition of the dispose function and makes
usage of already finalized/finalizing GSources more obvious than the
use-after-free that would otherwise happen.
2019-11-29 20:56:38 +01:00
Sebastian Dröge
0adf5cae35 Add g_source_set_dispose_function() for setting a dispose function for GSource
This allows GSource implementors to safely clear any other references to
the GSource while the GSource is still valid, unlike when doing the same
from the finalize function.

After the dispose function has run, it is valid for the reference count
of the GSource to be > 0 again to allow the case where another thread in
the mean-time got access to the GSource reference before the dispose
function was called.

This allows fixing a thread-safety issue in the GCancellable, GstBus and
various other GSource implementations.
2019-11-29 20:56:38 +01:00
Xavier Claessens
7b65b77a65 doc: Add missing --ignore-decorators
(cherry picked from commit 6ea0dcc6c9af0c0e8cfebc77412838f5174b7dbc)
2019-11-29 18:43:10 +00:00
Daniel Mustieles
691485fb7c Updated Spanish translation 2019-11-28 13:48:12 +01:00
Emmanuele Bassi
9f6b5235e4 Merge branch 'ci-fixups' into 'master'
Minor CI fixups

See merge request GNOME/glib!1258
2019-11-28 12:29:10 +00:00
Philip Withnall
805dc2ae93 ci: Move style-check-diff commands out to a separate sh file
This doesn’t change how they run, but does split the code out a bit and
mean we can interleave it with comments. Should make it a little less
vile.

Suggested by Emmanuele Bassi; see !1252.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2019-11-28 11:47:48 +00:00
Philip Withnall
95b8c1c697 ci: Use extends rather than YAML anchors for only-default
This makes things slightly more extensible in future, but introduces no
functional differences right now.

See https://docs.gitlab.com/ce/ci/yaml/README.html#extends.

Suggested by Jordan Petridis.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2019-11-28 11:38:25 +00:00
Philip Withnall
a2fa23ab73 Merge branch 'wip/lantw/kqueue-Do-not-return-early-from-_kqsub_cancel' into 'master'
kqueue: Do not return early from _kqsub_cancel

Closes #1935

See merge request GNOME/glib!1232
2019-11-28 09:28:20 +00:00
Philip Withnall
4546b9abfe ci: Build Docker images rather than OCI images if using podman
The dockerd instance on some (but not all) GitLab CI runners doesn’t
like the OCI output from the version of podman on Fedora 31, which is
causing a lot of spurious CI failures.

If whoever’s running `run-docker.sh` is using podman to emulate docker,
it needs to be told to output in Docker format, not OCI format.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2019-11-27 15:06:11 +00:00
Ting-Wei Lan
6d734b895a kqueue: Do not return early from _kqsub_cancel
_kqsub_free assumes the caller has called _kqsub_cancel before calling
it. It checks if both 'deps' and 'fd' have been freed and aborts when
the condition is not met. Since the only caller of _kqsub_free is
g_kqueue_file_monitor_finalize, which does call _kqsub_cancel before
calling _kqsub_free, it seems to be correct for _kqsub_free to assert
values of these two members there.

However, it is possible for _kqsub_cancel to return early without
freeing any resource _kqsub_free expects to be freed. When the kevent
call fails, _kqsub_cancel does not free anything and _kqsub_free aborts
with assertion failure. This is an unexpected behavior, and it can be
fixed by always freeing resources in _kqsub_cancel.

Fixes: https://gitlab.gnome.org/GNOME/glib/issues/1935
2019-11-27 22:49:56 +08:00
Philip Withnall
8c68e30eb8 Merge branch 'wip/hadess/add-sudo-fedora-docker' into 'master'
Add sudo to Fedora docker image

See merge request GNOME/glib!1235
2019-11-27 14:19:19 +00:00
Philip Withnall
cd11067a03 ci: Use new Fedora v5 Docker image for all CI jobs
v5 was built using the fedora.Dockerfile updates from the previous few
commits.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2019-11-27 13:23:45 +00:00
Bastien Nocera
c625c37dde ci: Remove python3{,-pip} from list of packages
Package python3-3.7.5-1.fc30.x86_64 is already installed.
Package python3-pip-19.0.3-3.fc30.noarch is already installed.
2019-11-27 13:23:12 +00:00
Bastien Nocera
fd4d68615f ci: Add sudo support for default Fedora docker user 2019-11-27 13:23:12 +00:00
Bastien Nocera
aa8908f469 ci: Update the Fedora docker to a supported version
Fedora 29 is only supported up until 2019-11-29, bump version to 30.
2019-11-27 13:23:12 +00:00
Bastien Nocera
d38d6bf8ea ci: Add gnome-desktop-testing to the Fedora docker image
With plans to run the installed-tests on Fedora soon.
2019-11-27 13:23:12 +00:00
Philip Withnall
dc3f46380c Merge branch 'ci-fix' into 'master'
ci: Fix running all jobs on merge requests

See merge request GNOME/glib!1252
2019-11-27 13:04:49 +00:00
Philip Withnall
a937e99ca5 Merge branch 'wip/oholy/gio-mount-uuid' into 'master'
gio-tool-mount: Allow mounting by the given UUID

See merge request GNOME/glib!1249
2019-11-27 12:50:58 +00:00
Ondrej Holy
dd49962eaf gio-tool-mount: Do not print anything if "gio mount -d" suceeded
"gio mount" doesn't print anything in case of success, however "gio mount -d"
prints "Mounted [id] at [mount_path]", which is inconsistent. It might probably
make sense for fstab volumes, but "gio mount -d" now support UUIDs which are
heavily used for daemon mounts and I think that it is not wise to print
"/run/user/$UID/gvfs" mount paths. The mount path can be still found over
"gio mount -l". Let's remove this message to make it more consistent.
2019-11-27 13:37:51 +01:00
Ondrej Holy
8c24b7cd6e gio-tool-mount: Allow mounting by the given UUID
"gio mount" only allows mounting volumes using device files, but not using
UUIDs. Volume monitors for various GVfs locations usually supports just UUIDs.
It would be handy to support them also for testing purposes (because
"g_file_mount_enclosing_volume()" does something else than "g_volume_mount()"
in case of shares provided by GOA volume monitor for example). Let's update
"-d" option to support also UUIDs.

https://gitlab.gnome.org/GNOME/gvfs/issues/251
2019-11-27 13:20:57 +01:00
Philip Withnall
2daebc7674 ci: Fix running all jobs on merge requests
Since we added `only: [merge_requests]` for the `style-check-diff` job,
that started running detached pipelines only for merge requests and only
containing that job, and not running the other jobs for merge requests
(only for branches).

That wasn’t the intention.

Follow the guide on
https://docs.gitlab.com/ee/ci/merge_request_pipelines/index.html#excluding-certain-jobs
to ensure that all jobs (including `style-check-diff`) are run for merge
requests.

This means we can no longer unconditionally use
`${CI_MERGE_REQUEST_TARGET_BRANCH_{NAME,SHA}}`, since they are only
defined for jobs which are running against a merge request rather than a
branch. Instead, use some `git rev-list` magic from
https://stackoverflow.com/a/4991675/2931197 to find the newest common
ancestor commit between the detached head that CI is running on, and the
known or likely target branch. Do the style check against the diff
between the newest common ancestor commit and the detached head.

(Note that `${CI_MERGE_REQUEST_TARGET_BRANCH_SHA}` was never actually
defined for any of our pipelines, since it’s only available for CI
pipelines running on merged branches, which is a GitLab Premium
feature. Oops, my bad.)

In order to find the newest common ancestor commit, we need to pull the
upstream remote, since the CI pipeline might be running on a fork of the
main repository where various branches (particularly `master`) are out
of date.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2019-11-27 12:00:54 +00:00
Philip Withnall
3156ea5be7 ci: Factor out only/except properties from jobs
We can use a template to factor these out and make things a bit more
maintainable. This should introduce no functional changes.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2019-11-27 12:00:53 +00:00
Philip Withnall
efa7fa0375 ci: Run the style-check pipeline stage first
Don’t waste CI resources on compiling things which don’t comply with the
style rules.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2019-11-27 12:00:20 +00:00
Emmanuele Bassi
cc3716a943 Merge branch 'thread-safe-getpwnam' into 'master'
glocalvfs: Use thread-safe getpwnam_r() rather than getpwnam()

Closes #1687

See merge request GNOME/glib!681
2019-11-27 11:58:51 +00:00
Emmanuele Bassi
9b14cdc258 Merge branch 'ci-versioning' into 'master'
ci: Update all Debian CI runners to use v5 of the Dockerfile

See merge request GNOME/glib!1248
2019-11-27 11:56:39 +00:00
Philip Withnall
34cb297a86 Merge branch 'wip/nielsdg/g-list-store-find' into 'master'
gliststore: Add item lookup functions

Closes #1011

See merge request GNOME/glib!1096
2019-11-27 11:22:56 +00:00
Nirbheek Chauhan
5f0d0efeb6 giomodule: gio modules are no longer installed in bindir on MSVC
Ever since the port to Meson, gio modules (f.ex., by glib-networking)
are installed inside libdir both for MinGW and MSVC.
2019-11-27 16:10:51 +05:30
Nirbheek Chauhan
902fc6d261 Merge branch 'suppressions' into 'master'
Add additional valgrind suppressions

See merge request GNOME/glib!1223
2019-11-27 10:26:03 +00:00
Philip Withnall
7a4740c7b1 Merge branch 'zero-null' into 'master'
gthread: Fix "zero as null pointer" warning

See merge request GNOME/glib!1253
2019-11-27 09:04:48 +00:00
Jason Crain
be15a60bda gthread: Fix "zero as null pointer" warning
When compiling a program using glib with -Wzero-as-null-pointer-constant
warnings enabled, the compiler warns about this type check in the
g_once_init_enter macro. Fix by replacing "0" with "NULL".
2019-11-26 22:33:41 -07:00
Philip Withnall
bdf2583fbd glocalvfs: Use thread-safe getpwnam_r() rather than getpwnam()
It’s possible that one VFS operation will happen from a worker thread at
the same time as another is happening from the main thread, in which
case the static buffer which getpwnam() uses will be overwritten.
There’s a chance this will corrupt the results that one of the threads
receives.

Fix that by using the thread-safe getpwnam_r() version, via the new
g_unix_get_passwd_entry() function.

Fix the indentation of the surrounding block while we’re there.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Fixes: #1687
2019-11-26 12:17:04 +00:00
Philip Withnall
94a800fb9d glib-unix: Add g_unix_get_passwd_entry() function
This is a convenience wrapper around getpwnam_r() which handles all the
memory allocation faff.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Helps: #1687
2019-11-26 12:17:04 +00:00
Philip Withnall
d8c5bcbb7d Merge branch 'wip/hadess/socket-test-not-parallel' into 'master'
tests: Run "timeout tests" sequentially

See merge request GNOME/glib!1239
2019-11-26 10:51:20 +00:00
Philip Withnall
6c41e91f03 Merge branch 'wip/ernestask/g_clear_list' into 'master'
Add g_clear_list()

Closes #1943

See merge request GNOME/glib!1244
2019-11-26 10:36:52 +00:00
Benjamin Otte
276e927fd4 Revert last 4 commits
This reverts commits:
  5899c61ed2
  e994d45352
  eb20dec144
  ebec0dd359
which wer accidentally pushed to master instead of a branch
2019-11-26 00:54:15 +01:00
Benjamin Otte
5899c61ed2 value: Allow automatic transforms to/from interfaces
Use the new g_type_interface_instantiable_prerequisite() to check
compatibility for transform functions.

In particular, this allows interfaces (in my case GDK_TYPE_PAINTABLE) to
be transformed to/from any GObject type (in my case G_TYPE_OBJECT) using
the transform function registered to tranform between any 2 objects
(g_value_object_transform_value() does a type check and uses NULL if the
types don't match).

And this in turn allows be to g_object_bind_property() a gobject-typed
generic property (GtkListItem::item) to a GtkImage::paintable.
2019-11-25 20:06:49 +01:00
Benjamin Otte
e994d45352 closure: Support generic marshals for interface returns
Use the newly added g_type_interface_instantiable_prerequisite() to
allow closure return values being interfaces by looking up the
instantiable type for the interface and usings its GValue accessors.
2019-11-25 20:06:39 +01:00