Commit Graph

18211 Commits

Author SHA1 Message Date
Philip Withnall
524d96fd92 ci: Add a regex to parse line coverage statistics from genhtml output
GitLab can then use this to annotate each pipeline with its code
coverage statistics. It can only use one figure, so we choose lines
(rather than function or branch coverage) since it’s the most intuitive
figure.

This parses the ‘lines’ line from output like:

Overall coverage rate:
  lines......: 76.7% (108959 of 142122 lines)
  functions..: 80.7% (10294 of 12763 functions)
  branches...: 51.3% (50226 of 97953 branches)

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-05-24 23:44:53 +01:00
Christoph Reiter
f92d179f77 tests/strfuncs: drop some redundant test code
The loop was testing that all strings in the hash table are valid
utf-8, but the loop filling the hash table is already doing that.

https://bugzilla.gnome.org/show_bug.cgi?id=795569
2018-05-24 23:17:08 +02:00
Christoph Reiter
dad754f5bc tests/strfuncs: mingw-w64 prints 3 digits for the %e exponent
Filed and fixed upstream: https://sourceforge.net/p/mingw-w64/bugs/732/

Once we get a new release in MSYS2 or when we get better gnulib integration
this special case needs to be removed again, but for now this will do.

https://bugzilla.gnome.org/show_bug.cgi?id=795569
2018-05-24 23:17:08 +02:00
Christoph Reiter
044e65ee28 tests/strfuncs: handle unknown error codes when testing g_strerror
The tests checks that g_strerror returns unique error messages for
all error codes between 1-200, but under Windows only a small range of them
is actually used: https://msdn.microsoft.com/en-us/library/t3ayayh1.aspx

Change the test to check that the returned message is either unique or
matches the error message for unknown codes instead.

https://bugzilla.gnome.org/show_bug.cgi?id=795569
2018-05-24 23:17:08 +02:00
Christoph Reiter
3e5477b04b tests/logging: Don't hardcode the result of logging a pointer
The output of the %p type is implementation defined and on Windows we get
leading zeros depending on the pointer type size. Instead of adding
ifdeffery use g_snprintf() to generate the expected message.

https://bugzilla.gnome.org/show_bug.cgi?id=795569
2018-05-24 23:17:03 +02:00
Peter Bloomfield
1a6be02260 gmem.h: Use typeof() in g_steal_pointer() macro
g_steal_pointer is both an inline function, returning gpointer, and a
macro that casts the return value to the type of its argument. The first
version of the macro uses '0 ? (*(pp)) : (g_steal_pointer) (pp)' to cast
the return value to the type of *pp, but this fails to yield warnings
about incompatible pointer types with current gcc. Apparently the
ternary operator is optimized away before the type of the expression is
determined.

The typeof() (or __typeof__()) operator allows an explicit cast.

https://bugzilla.gnome.org/show_bug.cgi?id=742456

https://bugzilla.gnome.org/show_bug.cgi?id=796341
2018-05-23 17:49:31 +01:00
Matthias Clasen
d5869fc597 2.57.1 2018-05-22 17:21:16 -04:00
Matthias Clasen
2e9f3a9afe Revert "Rename objective-c files from .c to .m"
This reverts commit e400af99d4.
2018-05-22 17:21:16 -04:00
Matthias Clasen
e25a2f95b3 Revert "Meson: Fix cocoa and carbon support"
This reverts commit 2e3769a4f7.
2018-05-22 17:21:16 -04:00
Руслан Ижбулатов
52c45a102b W32: check filename for being NULL in g_stat()
Previous version of this function started with a call to g_utf8_to_utf16(),
which also served as a NULL check, since g_utf8_to_utf16() just returns NULL
on NULL strings. Current version of this function does some filename string
checks first and converts it to utf16 only after these checks are done, and
these checks do not take into account the possibility of filename being NULL.

Fix this by explicitly checking for NULL.
2018-05-22 16:43:35 +00:00
Xavier Claessens
2e3769a4f7 Meson: Fix cocoa and carbon support
- Compiler checks were failing because it were using C compiler to build
objc code.
- xdgmime is needed on osx too.
- -DGIO_COMPILATION must be passed to objc compiler too.
- gapplication doesn't build on osx, it is excluded in autotools too.

We have to be careful when we use add_project_link_arguments(): All
targets are built using link arguments for the C language, except for
libgio on osx which use the objc language, because it contains some ".m"
source files. See https://github.com/mesonbuild/meson/issues/3585.

https://bugzilla.gnome.org/show_bug.cgi?id=796214
2018-05-22 11:51:59 -04:00
Xavier Claessens
e400af99d4 Rename objective-c files from .c to .m
Those files got renamed to .c to work around an automake issue, but
Meson needs them to have .m extension. Better rename them at build time
in Makefile.am since that's where the workaround is needed.

https://bugzilla.gnome.org/show_bug.cgi?id=672777
2018-05-22 11:49:24 -04:00
Nirbheek Chauhan
458b6288bf gengiotypefuncs.py: Read and parse files in binary mode
Fixes this build error on macOS when inside an ssh terminal:

Traceback (most recent call last):
  File "[...]/gio/tests/gengiotypefuncs.py", line 23, in <module>
    for line in f:
  File "[...]/lib/python3.6/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 2625: ordinal not in range(128)

https://bugzilla.gnome.org/show_bug.cgi?id=796328
2018-05-22 14:34:17 +05:30
Nirbheek Chauhan
74af384153 meson: Add exception for atomic ops test for Android
Some compilers, particularly Android on armv5 and old versions of Clang
provide atomic ops, but don't define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
so we need to define it ourselves.

This matches what configure does, with the exception that now it's only
done for Android since clang defines __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
now.

https://bugzilla.gnome.org/show_bug.cgi?id=796325
2018-05-22 14:34:16 +05:30
Philip Withnall
0b60f2589f build: Remove an unnecessary ‘dnl’ from meson.build
Signed-off-by: Philip Withnall <withnall@endlessm.com>
Reviewed-by: nobody
2018-05-22 09:48:42 +01:00
Philip Withnall
c16e8af351 build: Migrate G_ATOMIC_LOCK_FREE docs from configure.ac to meson.build
The explanation of how G_ATOMIC_LOCK_FREE is meant to be used is useful.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
Reviewed-by: nobody
2018-05-22 09:48:04 +01:00
Mathieu Duponchelle
3c9a7ec270 meson: do not run atomic test with msvc
The latest patches have fixed the atomic check, which
uses __sync_bool_compare_and_swap , and thus fails on
MSVC.

As a result, in gatomic.c, we ended up trying to include
pthread.h, which failed.

This mimics the old behaviour a bit more closely, where
G_ATOMIC_LOCK_FREE was always defined in the win32
glibconfig.h

https://bugzilla.gnome.org/show_bug.cgi?id=796220
2018-05-22 09:44:34 +01:00
Nirbheek Chauhan
7551267f19 meson: Fix checks for posix_memalign and stpcpy
The 'no-builtin' checks were just plain wrong. For accurate detection of
functions, use has_function with a header in the prefix. This fixes
posix_memalign detection on Android and on MinGW32, MSYS-MinGW-w64, and
old versions of MSYS2-MinGW-w64.

Using the header in the `prefix:` is generally a good idea because of
how macOS does targetting of specific macOS releases at compile time.

This also allows cross-files to override the result by setting
`has_function_stpcpy = false`, etc in [extra properties]

https://bugzilla.gnome.org/show_bug.cgi?id=795876
2018-05-21 21:10:53 +05:30
Xavier Claessens
e2c154d9d8 Meson: Remove legacy code used to write pc files
We are using meson's generator now so those variables are not used
anymore.

https://bugzilla.gnome.org/show_bug.cgi?id=796264
2018-05-20 08:16:11 -04:00
Christoph Reiter
eceac66e86 meson: Don't skip snprintf/vsnprintf checks under MinGW
The comment stated that the test isn't good enough, but it correctly
detects a C99 printf when I build with -D__USE_MINGW_ANSI_STDIO=1
and an incompatible printf without it.

Using mingw-w64 from current MSYS2.

https://bugzilla.gnome.org/show_bug.cgi?id=795569
2018-05-18 18:54:57 +02:00
Christoph Reiter
a9164f55f7 docs: Add a note that the printf format macros might not be compatible with system printf()
The current docs implied, by using the printf name, that the macros would
be compatible with printf(), but that's not always the case.

On Windows we use gnulib if the system printf isn't good enough.
This can happen on MinGW without __USE_MINGW_ANSI_STDIO set or with MSVC
with a varrying degree of incompatibility.

https://bugzilla.gnome.org/show_bug.cgi?id=795569
2018-05-18 18:54:33 +02:00
Xavier Claessens
41e008266d kqueue: Fix typo that breaks the build in previous commit 2018-05-18 10:52:08 -04:00
Xavier Claessens
5b19df2f44 kqueue: Fix -Wdeclaration-after-statement errors
https://bugzilla.gnome.org/show_bug.cgi?id=796213
2018-05-18 10:09:24 -04:00
Xavier Claessens
487b1fd20c Meson: Add export-dynamic flag
https://bugzilla.gnome.org/show_bug.cgi?id=788773
2018-05-17 10:27:01 -04:00
Philip Withnall
53d3455e75 build: Add missing return statements from compiled tests
This could have caused spurious test failures when running with -Werror,
due to the missing return statement in int main().

Signed-off-by: Philip Withnall <withnall@endlessm.com>
Reviewed-by: nobody
2018-05-17 15:11:17 +01:00
Philip Withnall
1a6fc60fe9 build: Fix test for G_ATOMIC_LOCK_FREE in meson.build
Commit 3e96523e6b did not entirely fix the test, as the compiled test
code did not have a main() function, so failed to link with:

 /usr/lib/gcc/x86_64-redhat-linux/7/../../../../lib64/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status

This caused an invalid mixtures of builtin and non-builtin atomics/locks
to be used, which caused deadlocks in a number of tests.

Fix the atomic ops test in meson.build, and the unit tests all start
working again.

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

https://bugzilla.gnome.org/show_bug.cgi?id=796164
2018-05-17 15:10:41 +01:00
Philip Withnall
d388a00028 docs: Fix typo in gsignal.c documentation comment
Spotted by Morten Welinder <mortenw@gnome.org>.

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

https://bugzilla.gnome.org/show_bug.cgi?id=796186
2018-05-17 13:54:46 +01:00
Xavier Claessens
2477c7b05f Meson: add 'force_posix_threads' option
This allows building with posix threads on Windows. It is generally
better to use win32 threads implementation on Windows, but this option
can be used in case it causes issues, or for performance comparison for
example.

https://bugzilla.gnome.org/show_bug.cgi?id=784995
2018-05-16 10:21:07 -04:00
Xavier Claessens
4b82738f0a Meson: Add missing flags on Windows
win32_cflags gets used globally as cflags and exposed in the .pc file.
win32_ldflags gets passed to glib-2.0 and exposed in the .pc file.

This should match what the autotools build is currently doing with
GLIB_EXTRA_CFLAGS and G_LIBS_EXTRA.

https://bugzilla.gnome.org/show_bug.cgi?id=784995
2018-05-16 10:19:08 -04:00
Xavier Claessens
cf28bf1f11 Meson: Remove FIXME about COCOA_LIBS and CARBON_LIBS
They are already handled properly by osx_ldflags. As far as I can tell
it does the same as with autotools.

https://bugzilla.gnome.org/show_bug.cgi?id=784995
2018-05-16 10:19:08 -04:00
Ondrej Holy
d0821da524 gio: Add g_unix_mount_get_options
GVfsUDisks2VolumeMonitor handles x-gvfs-hide/x-gvfs-show mount options
used to overwrite our heuristics whether the mount should be shown, or
hidden. Unfortunately, it works currently only for mounts with
corresponding fstab entries, because the options are read over
g_unix_mount_point_get_options. Let's introduce g_unix_mount_get_options
to allow reading of the options for all sort of mounts (e.g. created
over pam_mount, or manually mounted).

(Minor fixes to the documentation by Philip Withnall
<withnall@endlessm.com>.)

https://bugzilla.gnome.org/show_bug.cgi?id=668132
2018-05-16 11:31:42 +01:00
Philip Withnall
12de474808 gtimezone: Fix two minor leaks in zone_info_unix()
• A leak of filename on an error path
 • A leak of resolved_identifier if no out_identifier return location
   was provided

The latter was spotted by Peter Bloomfield
(8945227743 (note_111254)).
Thanks!

Signed-off-by: Philip Withnall <withnall@endlessm.com>
Reviewed-by: nobody
2018-05-16 11:27:25 +01:00
Nirbheek Chauhan
a9fe62aa2c gwin32: Fix detection of MinGW32 vs MinGW-w64
__MINGW32__ is defined on all MinGW variants including MinGW-w64.
__MINGW64_VERSION_MAJOR is only defined on MinGW-w64.

This difference is important because on MinGW-w64 we must #include
winternl.h because including ntdef.h results in compiler errors
about symbol redefinition, and the header warns that it is deprecated
and may be removed in the future.

https://bugzilla.gnome.org/show_bug.cgi?id=795849
2018-05-16 11:07:30 +01:00
Nirbheek Chauhan
ab0a0c706c meson: Fix error message for iconv detection 2018-05-16 14:26:11 +05:30
Xavier Claessens
7b8d8835f5 Meson: libintl is a public dependency of glib-2.0
On non-glibc platforms gettext is provided by extra libintl dependency.
We wrongly thought libintl is an internal dependency and applications
needs to explicitly link on it, but turns out that breaks many
applications and with autotools the .pc generated actually has -lintl in
public "Libs:".

https://bugzilla.gnome.org/show_bug.cgi?id=796085
2018-05-15 13:00:44 -04:00
Philip Withnall
e64113bca0 gobject: Add g_autoptr() support for GTypeClass, GEnumClass, GFlagsClass
Signed-off-by: Philip Withnall <withnall@endlessm.com>

https://bugzilla.gnome.org/show_bug.cgi?id=789968
2018-05-15 15:38:33 +01:00
Philip Withnall
cdfc79aae9 gobject: Add g_autoptr() support for GParamSpec
Do not add support for its subtypes, since all their constructors return
GParamSpec*, and g_param_spec_unref() takes a GParamSpec* rather than a
gpointer — adding G_DEFINE_AUTOPTR_CLEANUP_FUNC() for subtypes of
GParamSpec results in compiler warnings about mismatched parameter
types (GParamSpecBoolean* vs GParamSpec*, for example).

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

https://bugzilla.gnome.org/show_bug.cgi?id=796139
2018-05-15 15:34:09 +01:00
Ondrej Holy
1ec70e713c gio: Fix typo in g_file_info_set_attribute docs
g_file_info_set_attribute mentions %G_ATTRIBUTE_TYPE_INVALID, but no
such value exists. It should be %G_FILE_ATTRIBUTE_TYPE_INVALID.

https://bugzilla.gnome.org/show_bug.cgi?id=796138
2018-05-15 15:54:18 +02:00
Philip Withnall
1f20ddbb55 gqueue: Document to use GAsyncQueue for thread-safe queuing
Signed-off-by: Philip Withnall <withnall@endlessm.com>
Reviewed-by: nobody
2018-05-15 12:50:50 +01:00
Kukuh Syafaat
ea8bd63d34 Update Indonesian translation 2018-05-12 03:59:08 +00:00
David Faure
1c177ce0ab xdgmime: Add better detection for text vs. binary and zero-sized files
This detects zero-sized files to return the special-case
"application/x-zerosize" mime-type, as well as trying to differentiate
unknown file types based on their first 128 bytes of data, so that text
editors can automatically handle unknown text files.

Based on:
https://cgit.freedesktop.org/xdg/xdgmime/commit/?id=5181175d5fdaa3832b0fd094cda0120b1fe92af6
https://cgit.freedesktop.org/xdg/xdgmime/commit/?id=9c5802b8da56187c5c6abaf70042d14b12d832a9

https://bugzilla.gnome.org/show_bug.cgi?id=795544
2018-05-10 11:46:17 +01:00
Philip Withnall
d0a48f26c7 garray: Add g_ptr_array_steal_index*() functions
These make it easy to steal elements from pointer arrays without having
the array’s GDestroyNotify called on them, similarly to what’s possible
with g_hash_table_steal().

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

https://bugzilla.gnome.org/show_bug.cgi?id=795376
2018-05-09 13:52:05 +01:00
Philip Withnall
e6200eaea2 garray: Document that return value of g_ptr_array_remove() may be junk
If using g_ptr_array_remove*() with a non-NULL GDestroyNotify function,
the value returned will probably be freed memory (depending on what the
GDestroyNotify) function actually does. Warn about that in the
documentation. We can’t just unconditionally return NULL in these cases,
though, since the user might have set the GDestroyNotify to a nifty
function which doesn’t actually free the element; so returning it might
still be valid and useful.

Also add missing (nullable) annotations to that documentation.

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

https://bugzilla.gnome.org/show_bug.cgi?id=795376
2018-05-09 13:52:05 +01:00
Philip Withnall
2c9a84e5a3 garray: Factor out implementation of g_ptr_array_remove_index*()
They were almost identically the same. This introduces no functional
changes, but will help with upcoming additions to GPtrArray.

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

https://bugzilla.gnome.org/show_bug.cgi?id=795376
2018-05-09 13:52:05 +01:00
Nirbheek Chauhan
3e96523e6b meson: Fix atomic ops test to match configure.ac
We must try linking, not just compiling. That will give a false
positive.
2018-05-09 18:04:59 +05:30
Nirbheek Chauhan
91c9cb5a52 config.h.meson: Add some missing #mesondefines
The compiler checks were being completely ignored.
2018-05-09 18:04:09 +05:30
Xavier Claessens
b6cb22f32b Meson: Do not build tests with nodelete/Bsymbolic-functions
-z nodelete breaks the libresourceplugin module usage in the resources.c
test, which expects to be able to unload it.

Make the Meson build match what the autotools build does: only pass
glib_link_flags to the headline libraries (glib-2.0, gio-2.0,
gobject-2.0, gthread-2.0, gmodule-2.0) and omit it from all other build
targets.

https://bugzilla.gnome.org/show_bug.cgi?id=788771
2018-05-09 12:52:59 +01:00
Christian Hergert
e924f77736 gtype: improve get_type fast path
The -fstack-protector-strong used in many distributions by default has a
rather drastic slowdown of the fast path in generated _get_type()
functions using G_DEFINE_* macros. The amount can vary by architecture,
GCC version, and compiler flags.

To work around this, and ensure a higher probability that our fast-path
will match what we had previously, we need to break out the slow-path
(registering the type) into a secondary function that is not a candidate
for inlining.

This ensures that the common case (type registered, return the GType id)
is the hot path and handled in the prologue of the generated assembly even
when -fstack-protector-strong is enabled.

https://bugzilla.gnome.org/show_bug.cgi?id=795180
2018-05-09 12:25:06 +01:00
Christian Hergert
ede5c3f8d9 macros: add G_GNUC_NO_INLINE function attribute
https://bugzilla.gnome.org/show_bug.cgi?id=795180
2018-05-09 12:25:06 +01:00
okimoto
2fd0627326 gutils: Fix deprecation annotation for g_format_size_for_display()
It was deprecated in 2.30.

https://bugzilla.gnome.org/show_bug.cgi?id=795960
2018-05-09 10:52:15 +01:00