Commit Graph

29025 Commits

Author SHA1 Message Date
Philip Withnall
1fdbc06385 meson: Add missing dependencies for utility files for gdbus-codegen
Various parts of the build (such as `objectmanager-rst-gen`) depend on
running `gdbus-codegen` after it’s been built, but they currently only
encode a dependency to the main codegen Python file and not the
supporting files. This can cause `gdbus-codegen` to fail with an
`ImportError` if the build races so that `objectmanager-rst-gen` is
built before the codegen supporting files.

Example failure here: https://gitlab.gnome.org/pwithnall/glib/-/jobs/3266471
```
FAILED: gio/tests/gdbus-object-manager-example/objectmanager-rst-gen-org.gtk.GDBus.Example.ObjectManager.Animal.rst gio/tests/gdbus-object-manager-example/objectmanager-rst-gen-org.gtk.GDBus.Example.ObjectManager.Cat.rst
/usr/bin/python3 gio/gdbus-2.0/codegen/gdbus-codegen --interface-prefix org.gtk.GDBus.Example.ObjectManager. --generate-rst objectmanager-rst-gen --output-directory gio/tests/gdbus-object-manager-example ../gio/tests/gdbus-object-manager-example/gdbus-example-objectmanager.xml
Traceback (most recent call last):
  File "/builds/pwithnall/glib/_build/gio/gdbus-2.0/codegen/gdbus-codegen", line 53, in <module>
    from codegen import codegen_main
  File "/builds/pwithnall/glib/_build/gio/gdbus-2.0/codegen/codegen_main.py", line 29, in <module>
    from . import dbustypes
  File "/builds/pwithnall/glib/_build/gio/gdbus-2.0/codegen/dbustypes.py", line 22, in <module>
    from . import utils
ImportError: cannot import name 'utils' from 'codegen' (/builds/pwithnall/glib/_build/gio/gdbus-2.0/codegen/__init__.py)
```

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>
2023-11-02 14:26:31 +00:00
Philip Withnall
aa936e12da Merge branch 'zbrown/gtask-prefix-error' into 'main'
gtask: Add g_task_return_prefixed_error()

See merge request GNOME/glib!3674
2023-11-02 12:53:03 +00:00
Philip Withnall
7785c5150a Merge branch 'ebassi/doc-gir-include-path' into 'main'
build: Fix the inclusion paths for GIR files in gi-docgen

See merge request GNOME/glib!3688
2023-11-02 12:26:01 +00:00
Emmanuele Bassi
3dbef3223b build: Fix the inclusion paths for GIR files in gi-docgen
The GIR files are now built by GLib itself, so they will be in the build
directories of each sub-library, except for GLib-2.0 which is built
alongside GObject-2.0.
2023-11-02 11:22:06 +00:00
Zander Brown
d33752b5ce
gtask: Add g_task_return_prefixed_error()
An equivalent to g_propagate_prefixed_error, but for errors sent though
GTask, allowing tasks to easily provide extra context to callers.
2023-11-02 02:55:55 +00:00
Philip Withnall
d1eb463ce2 gio-tool: Remove unnecessary exit() call
All the calls to `usage()` are immediately followed by a `return` from
`main()` which sets an appropriate exit status.

Calling `exit()` early means that running `gio --help` returns exit
status 1, which is incorrect — it should (by convention) return 0.

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>
2023-11-02 00:50:21 +00:00
Philip Withnall
1969608db5 Merge branch 'wip/smcv/issue3157' into 'main'
tests: Don't assume that sh optimizes simple commands into exec

Closes #3157

See merge request GNOME/glib!3685
2023-11-01 22:33:07 +00:00
Philip Withnall
c1eb8ded7b Merge branch 'fix-gmessage-domain-drop' into 'main'
gmessages: fix dropping irrelevant log domains

See merge request GNOME/glib!3679
2023-11-01 22:24:46 +00:00
Alexander Slobodeniuk
ae8018d360 gmessages: fix dropping irrelevant log domains
If the string of one log domain is contained in
another, it was printing both.

For example, if G_MESSAGES_DEBUG is "Gtkspecial",
it would also keep the logs of the "Gtk" domain
2023-11-01 22:24:45 +00:00
Simon McVittie
76148fc6db tests: Don't assume that sh optimizes simple commands into exec
Depending on the operating system, /bin/sh might either be bash (for
example on Fedora or Arch) or dash (for example on Debian or Ubuntu)
or some other POSIX shell.

When bash is asked to run a simple command with no shell keywords or
metacharacters, like this one, it replaces itself with the program
via execve(), but dash does not have that optimization and treats it
like any other program invocation in a larger script: it will fork,
exec the program in the child, and wait for the child in the parent.

This seems like it conflicts with sleep_and_kill() assuming that it can
use the subprocess's process ID as the sleep(1) process ID. Specifically,
if it sends SIGKILL, it will go to the sh(1) process and not the sleep(1)
child, which could result in the sh(1) process being terminated and
its sleep(1) child being leaked.

To get the bash-like behaviour portably, explicitly use the exec builtin
to instruct the shell to replace itself with sleep(1), so that the
process ID previously used for the shell becomes the process ID of the
sleep process.

This appears to resolve an intermittent hang and test timeout on Debian
machines (especially slower ones), although I'm not 100% clear on the
mechanics of how it happens.

Resolves: https://gitlab.gnome.org/GNOME/glib/-/issues/3157
Signed-off-by: Simon McVittie <smcv@collabora.com>
2023-11-01 17:56:48 +00:00
Philip Withnall
6d38e8be22 Merge branch 'wip/pwithnall/macos-leak-sanitizer' into 'main'
glib: Disable dynamic asan loading on macOS

See merge request GNOME/glib!3683
2023-11-01 15:37:11 +00:00
Philip Withnall
6ab8062dbb Merge branch 'hurd-ci-fix' into 'main'
ci: Remove .build-linux from Hurd CI scheduled job

See merge request GNOME/glib!3665
2023-11-01 15:20:23 +00:00
Marco Trevisan
d1fcb4f253 Merge branch 'gio-test-dependencies' into 'main'
tests: Fix dependency of test.gresource on test-generated.txt

See merge request GNOME/glib!3682
2023-11-01 14:55:25 +00:00
Philip Withnall
3b4846611d glib: Disable dynamic asan loading on macOS
The weak symbol resolution doesn’t seem to work (see
https://gitlab.gnome.org/GNOME/glib/-/jobs/3265405):
```
Undefined symbols for architecture x86_64:
  "___lsan_enable", referenced from:
      _g_leak_sanitizer_is_supported in gutils.c.o
  "___lsan_ignore_object", referenced from:
      _g_ignore_leak in gquark.c.o
      _g_ignore_leak in gthreadpool.c.o
      _g_ignore_leak in gutils.c.o
      _g_leak_sanitizer_is_supported in gutils.c.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
```

See !3672

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>
2023-11-01 14:34:37 +00:00
Philip Withnall
5ff31ae57d Merge branch 'zbrown/fix-4ce58df8' into 'main'
codegen: install codegen, not just the wrapper

Closes #3161

See merge request GNOME/glib!3670
2023-11-01 14:22:29 +00:00
Philip Withnall
a61888bceb tests: Fix dependency of test.gresource on test-generated.txt
`test-generated.txt` is listed in `test.gresource.xml`, so it needs to
be specified as a dependency in the `custom_target()` which uses
`test.gresource.xml`.

Fixes intermittent build failures like:
```
FAILED: gio/tests/test.gresource
/builds/GNOME/glib/_build/gio/glib-compile-resources --compiler=gcc --target=gio/tests/test.gresource --sourcedir=/builds/GNOME/glib/gio/tests --sourcedir=/builds/GNOME/glib/_build/gio/tests --internal ../gio/tests/test.gresource.xml
../gio/tests/test.gresource.xml: Failed to locate test-generated.txt in any source directory.
```

See !3671 and #3163.

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>
2023-11-01 11:24:17 +00:00
Philip Withnall
9695ddfc70 Revert "gio/tests: Add test generated txt as the resources test dependency"
This reverts commit 0b9900e4e7.

The dependency was added in the wrong place: `test-generated.txt` is
needed when compiling `test.gresource`, not when compiling the test
which ultimately uses that gresource.

See !3671 and #3163.
2023-11-01 11:10:39 +00:00
Philip Withnall
f3f23b0229 Merge branch 'gsignalgroup-avoid-g-return-macro' into 'main'
gsignalgroup: Avoid function call with side effect in g_return_* macro

See merge request GNOME/glib!3678
2023-11-01 10:53:55 +00:00
Kleis Auke Wolthuizen
9ec6c19342 gsignalgroup: Avoid function call with side effect in g_return_* macro 2023-11-01 10:53:55 +00:00
Michael Catanzaro
8773121ba2 Merge branch 'gquark-register-leaks' into 'main'
Make GQuark register intentional leaks

See merge request GNOME/glib!3677
2023-10-31 17:26:09 +00:00
Seppi Wilhelmi
fc3d3a5499 Make GQuark register intentional leaks 2023-10-31 16:53:40 +01:00
Philip Withnall
6d45bdb1bf Merge branch 'lsan-dynamic-loading' into 'main'
glib-private: Check for LSAN support at runtime when controlling it

See merge request GNOME/glib!3672
2023-10-29 20:40:11 +00:00
Yuri Chornoivan
f3ae26d68d Update Ukrainian translation
(cherry picked from commit ea71087141)
2023-10-29 12:09:17 +00:00
Michael Catanzaro
cd1e11d1b1 Merge branch 'generated-txt-as-dep' into 'main'
gio/tests: Add test generated txt as the resources test dependency

See merge request GNOME/glib!3671
2023-10-27 17:07:42 +00:00
Marco Trevisan (Treviño)
0b9900e4e7 gio/tests: Add test generated txt as the resources test dependency
This is required by the resources used in some tests, however we did not
depend on it so we had some random build failures:
  https://gitlab.gnome.org/3v1n0/glib/-/jobs/3253787
2023-10-27 18:41:51 +02:00
Marco Trevisan (Treviño)
fb58d55187 glib-private: Check for LSAN support at runtime when controlling it
GLib ignores various leaks that we don't consider as such (like the
default gio modules) via the LSAN public interface, however those cases
are always ignored when using a non-ASAN compiled glib is used by an
ASAN-compiled binary.

This makes all the GLib-related programs to fail because of false
positive leaks.

To avoid this, use the gcc extension for weak linking so that we can
control ASAN and LSAN only if the symbols they provide are actually
available at runtime.
2023-10-27 18:31:53 +02:00
Marco Trevisan (Treviño)
d354b2f55e gmacros: Add fallback definition for weak attribute 2023-10-27 17:19:08 +02:00
Zander Brown
e2433308c4
codegen: install codegen, not just the wrapper
Turns out, wasn't jhbuild this time

Fix: 4ce58df854
2023-10-27 04:21:58 +01:00
Emmanuele Bassi
a1664c3fa3 Merge branch 'wip/abono/ptrace-o-exitkill-check' into 'main'
meson: Improve PTRACE_O_EXITKILL presence check

Closes #3156

See merge request GNOME/glib!3669
2023-10-26 10:23:04 +00:00
Alessandro Bono
168de73a73 meson: Improve PTRACE_O_EXITKILL presence check
The PTRACE_O_EXITKILL symbol in sys/ptrace.h is an enum member, not
a macro. The #ifdef check added to the GSubprocess test-case in
272ec5dbca will not detect it.

Use cc.has_header_symbol() to properly detect it. According to the
documentation: "Symbols here include function, variable, #define,
type definition, etc.".

Fixes: 272ec5dbca
Closes: https://gitlab.gnome.org/GNOME/glib/-/issues/3156
2023-10-26 10:54:34 +02:00
Philip Withnall
75800b6b09 girepository: Ensure config.h is included first in gdump.c
Follow on from the previous commit.

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

Helps: #3155
2023-10-25 19:33:29 +01:00
Philip Withnall
371ddd62e5 girepository: Move an include to avoid _WIN32_WINNT being redefined
This fixes a warning on msys2-mingw32:
https://gitlab.gnome.org/GNOME/glib/-/jobs/3227892.

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

Helps: #3155
2023-10-25 19:16:58 +01:00
Philip Withnall
512e4b5440 girepository: Use G_OPTION_ENTRY_NULL to avoid compiler warnings
About uninitialised fields.

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

Helps: #3155
2023-10-25 19:03:07 +01:00
Philip Withnall
6b664a4be8 gifieldinfo: Add missing break statement
This quells a compiler warning.

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

Helps: #3155
2023-10-25 18:50:31 +01:00
Philip Withnall
dda97fea98 girepository: Ensure gi-visibility.h is built before girepository-internals
It gets transitively included.

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

Helps: #3155
2023-10-25 18:41:05 +01:00
Philip Withnall
216066d90c girparser: Add a missing G_GNUC_FALLTHROUGH
This fixes a compiler warning.

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

Helps: #3155
2023-10-25 18:38:30 +01:00
Philip Withnall
9103eae11f build: Add missing builddir include to libgirepository-internals
Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

Helps: #3155
2023-10-25 18:35:05 +01:00
Philip Withnall
f0e11e82d3 girepository: Various fixes to symbol visibility and compilation defines
To make the setup in libgirepository match that in libgio.

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

Helps: #3155
2023-10-25 18:30:38 +01:00
Philip Withnall
5f012e9f12 girepository: Add missing includes of corresponding headers
Make sure that each C file in `girepository/` includes its corresponding
header file (if such a file exists).

This ensures that the first declaration the compiler sees for each
function contains the symbol visibility macros. This fixes symbol export
(`dllexport`) on Windows platforms.

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

Helps: #3155
2023-10-25 18:11:38 +01:00
Philip Withnall
3c89fe9d03 build: Add missing builddir include to libgirepository-gthash
Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

Helps: #3155
2023-10-25 18:03:45 +01:00
Philip Withnall
a6df2ec312 girepository: Ensure gi-visibility.h is built before gthash.c
`gthash.c` transitively includes it.

Most of this commit is just moving variables around so `gi_visibility_h`
is defined early enough in the file. The moved code has not been changed.

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

Helps: #3155
2023-10-25 18:02:52 +01:00
Philip Withnall
a27a75b219 girepository: Use subdir paths in #includes
The pkg-config file sets the include directory to the level above
`girepository/`, just like with GIO, GObject and GModule.

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

Helps: #3155
2023-10-25 17:45:42 +01:00
Philip Withnall
4dcd044b02 build: Add missing builddir include to libgirepository
Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

Helps: #3155
2023-10-25 17:28:37 +01:00
Philip Withnall
82a3bf5bc2 girepository: Fix include paths in girepository.h
Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

Helps: #3155
2023-10-25 17:12:29 +01:00
Philip Withnall
e30f8ac0a1 girepository: Add remaining license/copyright SPDX headers
These are all custom-written, including a load of research in `git log`
to find the copyright holders for `girepository/meson.build` and
`girepository/gi-dump-types.c`.

With this, `reuse lint` raises no complaints about the `girepository/`
directory.

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

Helps: #3155
2023-10-25 17:12:25 +01:00
Philip Withnall
844544f72c girepository: Add SPDX license header to all obvious files
Add the SPDX license runes to all the files which have an obvious
copyright header already. This is a mechanical edit.

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

Helps: #3155
2023-10-25 17:10:10 +01:00
Philip Withnall
58cce38f37 Merge branch 'migrate-to-gi-docgen8' into 'main'
Switch to using gi-docgen for docs (batch 8)

See merge request GNOME/glib!3667
2023-10-25 14:28:43 +00:00
Philip Withnall
14b02d2631 docs: Move the GUnixFDList SECTION
Move it to the struct docs.

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

Helps: #3037
2023-10-25 15:10:16 +01:00
Philip Withnall
2f662b6063 docs: Move the GTlsPassword SECTION
Move it to the struct docs.

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

Helps: #3037
2023-10-25 15:10:16 +01:00
Philip Withnall
c015ecf0b7 docs: Move the GTlsInteraction SECTION
Move it to the struct docs.

Signed-off-by: Philip Withnall <philip@tecnocode.co.uk>

Helps: #3037
2023-10-25 15:10:16 +01:00