Commit Graph

310 Commits

Author SHA1 Message Date
Ryan Lortie
1de36e7755 Fix g_cond_wait_until() vs. monotonic time
We've had a relatively rocky path with g_cond_wait_until() on systems
that either don't support pthread_condattr_setclock() or where
g_get_monotonic_time() is not based on CLOCK_MONOTONIC (ie: Android and
Mac OS).

Fortunately, both of these platforms seem to share
pthread_cond_timedwait_relative_np() which allows us to implement
g_cond_wait_until() without races.

With this patch, we now require that one of pthread_condattr_setclock()
or pthread_cond_timedwait_relative_np() exists.  A quick look around
suggests that this is true for all platforms that we care about.

This patch removes our use of pthread_cond_timedwait_monotonic() and
pthread_cond_timedwait_monotonic_np() which were Android-only APIs.

https://bugzilla.gnome.org/show_bug.cgi?id=673607
2014-02-20 17:55:09 -05:00
Ryan Lortie
d614312546 gmain: rework g_get_monotonic_time() a bit
We now assume the existence of clock_gettime() and CLOCK_MONOTONIC as
specified by POSIX.1-2001.  This means that we always return truly
monotonic time, which will prevent problems in the case that the user
changes the time.

Mac OS doesn't have clock_gettime() but it does have
mach_absolute_time(), so we can use that there.

We keep our Windows case as well (although we should simplify it once XP
hits EOL later this year).

This patch removes the fallback to gettimeofday() in case of missing
clock_gettime().  We no longer have any way to test this codepath and
therefore it must go.

This patch also restructures the #ifdef a bit so that we repeat the
entire function definition inside of #ifdef instead of just the entire
body of one function.

https://bugzilla.gnome.org/show_bug.cgi?id=724687
2014-02-20 17:52:49 -05:00
Ryan Lortie
ec17605d4f GLib 2.39.90 2014-02-17 18:33:34 -05:00
Matthias Clasen
c81834c089 Bump gtk-doc dep to 1.20 2014-02-17 16:57:13 -05:00
Ryan Lortie
450e7b1036 configure.ac: tweak inotify check
Our check for inotify_init1() being defined is broken.  We happily
declare that inotify is supported, even if the check fails.

This was originally intended to check for inotify_init1 in the libc so
that we could fall back to inotify_init if it was not yet defined.

FreeBSD has a libinotify that emulates the inotify API via kqueue.  It
installs a <sys/inotify.h> header and requires linking to -linotify.  We
don't want to falsely detect working inotify in this case.

Treat the lack of inotify_init1() in the libc as a lack of inotify
support.  This requires only a new libc -- we still support old kernels:
in the case that inotify1_init() fails, we fall back to inotify_init().

https://bugzilla.gnome.org/show_bug.cgi?id=724330
2014-02-14 10:42:40 -05:00
Matthias Clasen
7a76ab6f48 Bump version 2014-02-03 19:34:15 -05:00
Matthias Clasen
e7db49b6e3 2.39.4 2014-02-03 19:06:53 -05:00
Matthias Clasen
ff9a61eed9 Fix CFLAGS manipulation
The code for ensuring that CFLAGS contain -g if
--enable-debug has been specified did not work right.

https://bugzilla.gnome.org/show_bug.cgi?id=685204
2014-01-20 08:16:09 -05:00
Matthias Clasen
8aeb391a77 Improve GIOModule test coverage
Add a dedicated test for GIOModule.
2014-01-01 17:59:21 -05:00
Ryan Lortie
3f41e49285 Use POSIX-specified <poll.h> over <sys/poll.h>
POSIX specifies that <poll.h> is the correct header to include for
poll(), so let's do that instead.

https://bugzilla.gnome.org/show_bug.cgi?id=141251
2013-12-22 11:33:07 -05:00
Matthias Clasen
2f01b0975e Some tweaks to coverage support
Rename the configure option to --enable-coverage, and make
it quiet by default.
2013-12-21 13:22:00 -05:00
Matthias Clasen
4846fd923d Bump version 2013-12-17 00:45:41 -05:00
Matthias Clasen
698393f15d Fix the stack direction check again
Turns out I got it wrong.
2013-11-23 21:09:32 -05:00
Matthias Clasen
341c0b1988 Improve stack direction detection
When the function in the test program is inlined, all bets are
off whether the detection will work correctly or not. Make it
harder for the compiler to play games on us by making the
function recursive.

https://bugzilla.gnome.org/show_bug.cgi?id=307947
2013-11-23 20:27:04 -05:00
Matthias Clasen
df71ecfc2d Fix the configure check for growing stack
The check was getting the direction wrong, as proven by the
just committed signal invocation hint test.

https://bugzilla.gnome.org/show_bug.cgi?id=711871
2013-11-23 20:26:10 -05:00
Dan Winship
158dde0507 Replace #ifdef HAVE_UNISTD_H checks with #ifdef G_OS_UNIX
In Windows development environments that have it, <unistd.h> is mostly
just a wrapper around several other native headers (in particular,
<io.h>, which contains read(), close(), etc, and <process.h>, which
contains getpid()). But given that some Windows dev environments don't
have <unistd.h>, everything that uses those functions on Windows
already needed to include the correct Windows header as well, and so
there is never any point to including <unistd.h> on Windows.

Also, remove some <unistd.h> includes (and a few others) that were
unnecessary even on unix.

https://bugzilla.gnome.org/show_bug.cgi?id=710519
2013-11-20 09:25:39 -05:00
Dan Winship
3981cddbf8 Require POSIX.1 (1990) compliance on unix
Assume unix platforms support the original POSIX.1 standard.
Specifically, assume that if G_OS_UNIX, then we have chown(),
getcwd(), getgrgid(), getpwuid(), link(), <grp.h>, <pwd.h>,
<sys/types.h>, <sys/uio.h>, <sys/wait.h>, and <unistd.h>.

Additionally, since all versions of Windows that we care about also
have <sys/types.h>, we can remove HAVE_SYS_TYPES_H checks everywhere.

Also remove one include of <sys/times.h>, and the corresponding
configure check, since the include is not currently needed (and may
always have just been a typo for <sys/time.h>).

https://bugzilla.gnome.org/show_bug.cgi?id=710519
2013-11-20 09:17:42 -05:00
Dan Winship
6e4a7fca43 Require C90 compliance
Assume all supported platforms implement C90, and therefore they
(correctly) implement atexit(), memmove(), setlocale(), strerror(),
and vprintf(), and have <float.h> and <limits.h>.

(Also remove the configure check testing that "do ... while (0)" works
correctly; the non-do/while-based version of G_STMT_START and
G_STMT_END was removed years ago, but the check remained. Also, remove
some checks that configure.ac claimed were needed for libcharset, but
aren't actually used.)

Note that removing the g_memmove() function is not an ABI break even
on systems where g_memmove() was previously not a macro, because it
was never marked GLIB_AVAILABLE_IN_ALL or listed in glib.symbols, so
it would have been glib-internal since 2004.

https://bugzilla.gnome.org/show_bug.cgi?id=710519
2013-11-20 09:16:16 -05:00
Dan Winship
7f5b2901cf Remove alleged support for last-millennium Unixes
Remove workarounds for NeXTStep (last released in 1995), SunOS (1994),
HP-UX 9.x (1992) and 10.x (1995), OSF/1 / Digital UNIX / Tru64 UNIX
4.x (1999), and AIX 4.x (1999).

HP-UX 11 implements dlopen(), so dropping support for earlier versions
also lets us remove the HP-UX-specific gmodule-dld.

https://bugzilla.gnome.org/show_bug.cgi?id=710519
2013-11-20 09:16:16 -05:00
Dan Winship
51a917bc16 Remove alleged support for BeOS
Since the initial addition of BeOS support in 1999, there has only
been one update to it (in 2005, and it wasn't even very big). GLib is
known to not currently build on Haiku (or presumably actual BeOS)
without additional patching, and the fact that there isn't a single
G_OS_BEOS check in gio/ is suspicious.

Additionally, other than the GModule implementation, all of the
existing G_OS_BEOS checks are either (a) "G_OS_UNIX || G_OS_BEOS", or
(b) random minor POSIXy tweaks (include this header file rather than
that one, etc), suggesting that if we were going to support Haiku, it
would probably be simpler to treat it as a special kind of G_OS_UNIX
(as we do with Mac OS X) rather than as its own completely different
thing.

So, kill G_OS_BEOS.

https://bugzilla.gnome.org/show_bug.cgi?id=710519
2013-11-20 09:16:16 -05:00
Michael Haubenwallner
1f0573d2e6 AIX splice() is something different
AIX does provide the splice() symbol, but this does have different
signature and usecase than what Linux may provide.

https://bugzilla.gnome.org/show_bug.cgi?id=712314
2013-11-18 14:48:55 -05:00
Michael Haubenwallner
efb1701bf3 Use AC_HEADER_MAJOR
Instead of checking for sys/mkdev.h headerfile, there is the
AC_HEADER_MAJOR helper for how to get major(), minor(), makedev().

https://bugzilla.gnome.org/show_bug.cgi?id=712314
2013-11-18 14:47:53 -05:00
Ryan Lortie
d33f758313 bump version 2013-11-12 00:19:50 -05:00
Ryan Lortie
c0865fbaf2 bump version
dconf needs the new version with read_user_value() on the backend API.
2013-10-28 10:23:29 -07:00
John Ralls
5aead642c2 Restore gl_GLIBC21 to configure; needed for libcharset 2013-10-04 11:47:46 -07:00
William Orr
7eb1e5fc5b glocalfile: Only use O_DIRECTORY if available
Solaris 10 for example doesn't have it.

https://bugzilla.gnome.org/show_bug.cgi?id=708860
2013-09-26 15:22:51 -04:00
Ryan Lortie
d974d2ec8f Bump version to 2.39.0 2013-09-23 17:47:49 -04:00
Ryan Lortie
c8de2b11bb GLib 2.38.0 2013-09-23 17:07:33 -04:00
Ryan Lortie
373980f545 bump 2013-09-16 14:14:07 -04:00
Ryan Lortie
f4c3e56f19 GLib 2.37.92 2013-09-16 13:47:04 -04:00
Matthias Clasen
801a5c8bb2 bump version 2013-09-02 12:12:58 -04:00
Antoine Jacoutot
996edb0c46 fix atomic ops detection
AC_TRY_LINK should be used instead of AC_TRY_COMPILE because the code
will compile everywhere, either producing ``atomic'' code, or an
external reference to __sync_bool_compare_and_swap.

https://bugzilla.gnome.org/show_bug.cgi?id=706958
2013-08-28 12:01:44 +02:00
Matthias Clasen
a4363582b0 post-release bump 2013-08-19 23:54:43 -04:00
Matthias Clasen
0f46a48ee3 post-release version bump 2013-07-29 18:07:32 -04:00
Colin Walters
331e93c3f1 Drop iconv caching code
This was introduced for Solaris performance theoretically;
we have never been able to use it on Linux/glibc because
the UTF-16 BOM state isn't reset.

We have no data about Solaris performance; were some to
still exist, we could reintroduce the code with an explicit
check for Solaris, not a check for glibc.

https://bugzilla.gnome.org/show_bug.cgi?id=704999
2013-07-28 18:37:47 -04:00
Colin Walters
d2bb019533 configure: Use AC_USE_SYSTEM_EXTENSIONS
...instead of detecting glibc and using _GNU_SOURCE manually.  This
should fix the build when using glibc-emulating libraries; we can
defer portability work to autoconf.

https://bugzilla.gnome.org/show_bug.cgi?id=684123
2013-07-26 19:46:21 +01:00
Matthias Clasen
542099b5ad bump version 2013-07-09 14:28:19 -04:00
Sebastian Dröge
dbdfcb69ce gthread: Use pthread_cond_timedwait_monotonic() if available
Otherwise we have to rely on pthread_cond_timedwait() actually using
the monotonic clock, which might be true or not. On Android at least
it is using the realtime clock, no pthread_condattr_setclock() is available
but instead pthread_cond_timedwait_monotonic() can be used.
2013-07-04 10:41:59 +02:00
Ryan Lortie
5841267a6c version bump 2013-06-24 12:13:30 -04:00
Matthias Clasen
f9e47f1f2f Bump version 2013-06-17 12:56:40 -04:00
Dan Winship
16b26231ca gio/tests/inet-address: fix to work on OS X
OS X's getaddrinfo() only supports IPv6 scope IDs that are interface
names, not numbers. So use if_indextoname() to get the name of an
interface and construct an address using that.

https://bugzilla.gnome.org/show_bug.cgi?id=700123
2013-06-04 09:24:47 -03:00
Ryan Lortie
c828aef014 g_file_set_contents: change {posix_ => }fallocate
Use fallocate() instead of posix_fallocate() so that we just fail
instead of getting the emulated version from the libc.

https://bugzilla.gnome.org/show_bug.cgi?id=701560
2013-06-03 22:55:20 -04:00
Ryan Lortie
d3be43fcc5 g_file_set_contents(): use posix_fallocate()
Extents-based filesystems like knowing in advance how much data will be
written to a file in order to prevent fragmentation.  If we have it, use
posix_fallocate() before writing data in g_file_set_contents().

https://bugzilla.gnome.org/show_bug.cgi?id=701560
2013-06-03 16:12:04 -04:00
Ryan Lortie
f9eb9eed10 Rework the build system for a new tests approach
Perform a substantial cleanup of the build system with respect to
building and installing testcases.

First, Makefile.decl has been renamed glib.mk and substantially
expanded.  We intend to add more stuff here in the future, like canned
rules for mkenums, marshallers, resources, etc.

By default, tests are no longer compiled as part of 'make'.  They will
be built when 'make check' is run.  The old behaviour can be obtained
with --enable-always-build-tests.

--disable-modular-tests is gone (because tests are no longer built by
default).  There is no longer any way to cause 'make check' to be a
no-op, but that's not very useful anyway.

A new glibtests.m4 file is introduced.  Along with glib.mk, this
provides for consistent handling of --enable-installed-tests and
--enable-always-build-tests (mentioned above).

Port our various test-installing Makefiles to the new framework.

This patch substantially improves the situation in the toplevel tests/
directory.  Things are now somewhat under control there.  There were
some tests being built that weren't even being run and we run those now.
The long-running GObject performance tests in this directory have been
removed from 'make check' because they take too long.

As an experiment, 'make check' now runs the testcases on win32 builds,
by default.  We can't run them under gtester (since it uses a pipe to
communicate with the subprocess) so just toss them in TESTS.  Most of
them are passing on win32.

Things are not quite done here, but this patch is already a substantial
improvement.  More to come.
2013-05-31 23:12:15 -04:00
Ryan Lortie
9cfac6e76c Bump version. 2013-05-30 13:50:42 -04:00
Matthias Clasen
b5463f4cf4 Work with ltp 1.10 2013-05-29 08:37:50 -04:00
Colin Walters
ad7959c5b7 Add --enable-installed-tests configure option
See https://live.gnome.org/GnomeGoals/InstalledTests for more
information.

The tests now support being run both uninstalled and installed, so
'make check' works for those who want it.  For tests which need data
files, the way this works is they look in the compiled in value of
SRCDIR by default, and the generated tests use "env G_TEST_DATA=" to
override that.

This patch only converts glib/tests for now; if this patch looks good,
I'll do the rest of the tests.

https://bugzilla.gnome.org/show_bug.cgi?id=699079
2013-05-16 08:51:57 -04:00
Matthias Clasen
631cf195c8 Bump version to 2.37.1 2013-05-01 05:20:02 -04:00
Colin Walters
518e3104bf configure: Assume C90 compatible malloc() prototype
This ancient code was attempting to cope with (unknown) systems whose
malloc() prototype was incompatible with the standard.  This test was
fragile; it would break if the build environment provided -Wall in
CFLAGS.

Now that it's 2013, let's assume that target systems have a sane
malloc().  If someone complains, we can revisit this.

https://bugzilla.gnome.org/698716
2013-04-26 16:23:42 -04:00
Sebastian Dröge
bcbaf1bef0 Fix compilation on Android with the bionic C library
https://bugzilla.gnome.org/show_bug.cgi?id=689223
2013-04-16 13:24:26 +02:00