Commit Graph

55 Commits

Author SHA1 Message Date
Chun-wei Fan
e8d471f3e1 meson: Mostly assume clang-cl is MSVC
We need to enable building the dirent and gnulib sources for clang-cl,
as we are still using the Microsoft-style headers and lib's and CRT.
We need to also do this for the following, for similar reasoning:

-Symbol export (via __declspec(dllexport))
-Dependency discovery without pkg-config files
-long long and ssize_t detection

We do, however, enable the autoptr tests for clang-cl builds.  Note that
at this point real MSVC builds are still better supported than clang-cl
builds, and it will likely remain so for at least the near future,
alhtough real MSVC builds of the GTK stack are consumable and are usable
by clang-cl.
2019-07-11 15:38:21 +08:00
Chun-wei Fan
de5761db48 glib/gnulib: Include gnulib_math.h in place of math.h
For the new gnulib modules that were added, include gnulib_math.h in
place of math.h, so that the replacement functions can be properly
referenced.
2019-04-08 17:51:00 +08:00
Chun-wei Fan
35de287690 Update glib/gnulib/README
List the added gnulib modules that need to be updated.
2019-04-08 17:51:00 +08:00
Chun-wei Fan
b532b9cecf build: Check for more math.h functions in gnulib
There are now C99 functions that the printf items want to use that may
not be necessarily supported by the math.h that is shipped by the
compiler, such as signbit(), isinf(), isnan() and isfinite() and their
double, long and float counterparts.

This checks for whether these functions are provided by the math.h
shipped by the compiler, and builds the gnulib implementations of them
if they cannot be found.  Currently no attempt is made to check whether
these, if available from the compiler's math.h, are compliant with the
specs.
2019-04-08 17:50:59 +08:00
Chun-wei Fan
a1fbeb3e4f build: Improve tests for frexpl() and ldexpl()
The test programs for those in the Meson build files will not work for
Visual Studio prior to 2013 (whereas the rest of the code does).
Improve the tests for these by:

-Adding a test to see whether we can re-define a prototype for these
 functions, using cc.compiles().  If so, set HAVE_DECL_xxxx to be 0,
 otherwise set HAVE_DECL_xxxx to be 1.

Also, for glib/gnulib/frexpl.c, don't undefine frexpl on Visual Studio,
otherwise we will not be able to compile/link it on Visual Studio
compilers.
2019-04-08 17:50:59 +08:00
Руслан Ижбулатов
4081b0b623 Add the gnulib adaptation patch 2019-03-13 12:38:42 +00:00
Руслан Ижбулатов
8f27aa9965 glib: update internal gnulib from upstream
https://bugzilla.gnome.org/show_bug.cgi?id=795569

Related to issue #1371.
2019-03-13 12:38:42 +00:00
Philip Withnall
b3efef5b6f build: Drop autotools support
So long, and thanks for everything. We’re a Meson-only shop now.

glib-2-58 will remain the last stable GLib release series which is
buildable using autotools.

We continue to install autoconf macros for autotools-using projects
which depend on GLib; they are stable API.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2019-01-15 15:11:43 +00:00
Christoph Reiter
11fcc2f1ac build: simplify alloca checks. See #1313
The goal of this commit is to reduce differences between the autotools and meson build.

With autotools AC_FUNC_ALLOCA was used which defines HAVE_ALLOCA_H, HAVE_ALLOCA,
C_ALLOCA. meson tried to replicate that with has_function() but alloca can be a macro
and and is named _alloca under Windows. Since we require a working alloca anyway
and only need to know if the header exists replace AC_FUNC_ALLOCA with a simple
AC_CHECK_HEADERS.

There is still one user of HAVE_ALLOCA in the embedded gnulib, but since alloca is
always provided through galloca.h just force define HAVE_ALLOCA there and add a comment.

The docs were mentioning alloca as an example for cross compiling. Since that variable no
longer exists now replace it with another one.
2018-08-24 10:57:10 +02:00
Christoph Reiter
97c28f7fe1 ci: fix warnings and enable --werror for the mingw build
Fix various warnings regarding unused variables, duplicated
branches etc by adjusting the ifdeffery and some missing casts.

gnulib triggers -Wduplicated-branches in one of the copied files,
disable as that just makes updating the code harder.

The warning indicating missing features are made none fatal through
pragmas. They still show but don't abort the build.

https://bugzilla.gnome.org/show_bug.cgi?id=793729
2018-04-25 17:23:50 +02:00
Christoph Reiter
d137cebf8f meson: Disable -Wformat-nonliteral for the embedded gnulib
glib enables -Werror=format-nonliteral by default which is triggered
by the embedded gnulib (in vasnprintf.c). Disable that warning
for gnulib alone. The gnulib code is there to handle user provided
format strings, so the warning doesn't add anything anyway.

This fixes the build under MinGW.

https://bugzilla.gnome.org/show_bug.cgi?id=793729
2018-04-25 17:23:49 +02:00
Nirbheek Chauhan
e2bd6a6a8f gmacros: Don't define bogus __has_* macros
This pollutes the reserved compiler namespace and breaks applications
trying to do their own feature detection. For instance, this falsely
detects that alloca is not a builtin on gcc:

    #include <glib.h>
    #if defined(__has_builtin)
    # if !__has_builtin(alloca)
    #  error "wtf glib?"
    # endif
    #else
    /* version-checking to determine alloca existence */
    #endif

Instead, define our own g_macro__has_* versions that have the
behaviour that we need.

https://bugzilla.gnome.org/show_bug.cgi?id=794635
2018-03-26 17:12:32 +05:30
Ernestas Kulik
03e86d000f Remove HAVE_CONFIG_H defs and uses
Since GLib files are only meant to be built as part of GLib, config.h
always exists, so the checks are more or less pointless.

https://bugzilla.gnome.org/show_bug.cgi?id=793399
2018-02-21 13:57:10 +00:00
Nirbheek Chauhan
87122cae38 meson: Fix gnulib compilation on MSVC
glibinc is needed for including glibconfig.h, this was not noticed
during testing probably because a system-installed header got picked
up instead.
2017-11-24 12:41:53 +05:30
Chun-wei Fan
72528938b7 Meson: Check for HAVE_GOOD_PRINTF
The HAVE_GOOD_PRINTF config variable determines whether we are able to
use the CRT-supplied *printf() functions directly, by determining whether
the CRT-supplied vsnprintf() and snprintf() functions support C99 well
enough.

This means, we need to build the gnulib subdir as a static lib in GLib, and use
the gnulib *printf() functions when:

-We are on Windows
-The CRT's vsnprintf() and snprintf() is not sufficiently C99-compliant.

This will fix the problem when the *printf() functions cause a CRT
abort() call on pre-2015 Visual Studio builds at least, and ensures that
the Visual Studio 2015+ builds will pass the printf tests in GLib, since
the *printf() in Visual Studio 2015/2017's CRT does not support the %n
format specifier, nor the positional parameters (which requires
different _*printf_p*() functions), as indicated by
glib/tests/test-printf.c.

https://bugzilla.gnome.org/show_bug.cgi?id=783270
2017-08-17 17:46:37 +08:00
Philip Withnall
a131134918 build: Drop nmake/MSC build system for GLib
It hasn’t been seriously maintained for the best part of 10 years and is
very outdated. The recommended way to build GLib on Windows is now
Visual Studio:

https://wiki.gnome.org/Projects/GTK%2B/Win32/MSVCCompilationOfGTKStack#GLib

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

https://bugzilla.gnome.org/show_bug.cgi?id=722047
2017-07-10 11:22:40 +01:00
Emmanuele Bassi
c68903945d Regenerate the vasnprintf gnulib module imported files
Use gnulibg-tool --lgpl to import the vasnprintf module using the
correct GNU Lesser General Public License, version 2.1 or later, like
the rest of GLib.

https://bugzilla.gnome.org/show_bug.cgi?id=777203
2017-03-09 17:18:55 +00:00
Chun-wei Fan
6bd94863d0 glib/gnulib/printf-parse.c: Fix build on Visual Studio 2008
Visual Studio 2008 does not come with stdint.h, so define intmax_t instead
on Visual Studio 2008 so that the code will continue to build.  This was
previously unnoticed as building GTK+ since 3.16 requires an
implementation of stdint.h (such as msinttypes), and it took care of the
need of including the stdint.h header here, but people could be very well
using GLib without using GTK+ 3.x.
2016-05-25 14:13:33 +08:00
Руслан Ижбулатов
b7774b182d Make gnulib vfprintf return the number of bytes actually written
To be honest, i don't remember what problems were caused by it returning the
number of bytes it *wanted* to write instead of the number of bytes
it actually wrote. Probably related to the fact that fwrite could
independently fail, and ignoring its return value ignores that error.

https://bugzilla.gnome.org/show_bug.cgi?id=748064
2016-01-14 15:11:08 +00:00
Ignacio Casal Quinteiro
0b84596f6e gnulib: forgot some changes from HAVE_LONG_LONG_INT to HAVE_LONG_LONG
https://bugzilla.gnome.org/show_bug.cgi?id=756382
2015-10-15 17:42:02 +02:00
Ignacio Casal Quinteiro
212e4232e7 Update gnulib
It updates it to the version c5d07ce91a8ad51591154450442fa4376441fdfa
As a difference with upstream we need to ensure:
 * Include "g-gnulib.h" so the methods get the gnulib namespace.
 * xsize.h uses G_MAXSIZE instead of SIZE_MAX and the methods are
   marked as static inline.
 * Some defines are named different from the ones in glib i.e
   HAVE_LONG_LONG_INT is HAVE_LONG_LONG

All the unit tests pass properly with and without --enable-included-printf.
It has also been tested on Windows.

https://bugzilla.gnome.org/show_bug.cgi?id=756382
2015-10-15 14:54:42 +02:00
Aurélien Zanelli
5b74681f5b gnulib/vasprintf: handle unsigned modifier for long long
Otherwise, an unsigned integer will be displayed as a signed one if we
use internal printf and if HAVE_LONG_LONG_FORMAT is not defined.

https://bugzilla.gnome.org/show_bug.cgi?id=743936
2015-02-03 11:48:18 -05:00
Daniel Mustieles
078dbda148 Updated FSF's address 2014-01-31 14:31:55 +01: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
Matthias Clasen
ab328469f5 Silence automake
automake doesn't like INCLUDES anymore.
2013-02-02 22:54:15 -05:00
Ryan Lortie
346aa683de Fix visibility for glib/ and gio/ submodules
We have various sub directories in glib/ and gio/ (eg: inotify, gnulib,
pcre, xdgmime, etc.) that build convenience libraries that are then
included into libglib and libgio.  The files in these directories need
to be built with the same visibility policy as the files in the first
level directories, so add CFLAGS for them all.

This wasn't a problem when the visibility flags were set directly in
CFLAGS but then we had to deal with some modules that we built that we
explicitly wanted to export symbols from.

For now, we can keep things the way they are because it's less hacky and
although it's a theoretical hazard to forget these CFLAGS, we rarely add
new subdirectories to the build.
2013-01-18 13:23:40 -05:00
Dan Winship
b8c13a01b6 win32: misc warning fixes
https://bugzilla.gnome.org/show_bug.cgi?id=688109
2012-11-15 14:19:06 -05:00
Ryan Lortie
b3b7ea8e22 Replace -I with $(glib_INCLUDES) and friends
Stop using ad hoc -I in all of our Makefile.am.  Use the new variables
instead.
2010-08-06 13:10:34 -04:00
paul
9f6faaffb6 Add $(top_builddir)/glib to includes
This is required to find glibconfig.h during srcdir != builddir builds
2010-08-05 09:08:34 -04:00
Ryan Lortie
2e53e50244 glib/: fully remove galias hacks 2010-07-07 19:34:35 -04:00
Tor Lillqvist
56f54c0ebc Bug 167569 - g_string_append_printf crashes on win32 when used with a NULL
2009-02-27  Tor Lillqvist  <tml@novell.com>

	Bug 167569 - g_string_append_printf crashes on win32 when used
	with a NULL argument

	* glib/gnulib/vasnprintf.c (vasnprintf): Add workaround for buggy
	programs. Patch by Owen.


svn path=/trunk/; revision=7917
2009-02-27 07:46:32 +00:00
Tor Lillqvist
b1557680dd glib/gprintf.c Don't define _GNU_SOURCE on Windows, as _GNU_SOURCE has
2008-09-30  Tor Lillqvist  <tml@novell.com>

	* glib/gprintf.c
	* glib/gnulib/vasnprintf.c: Don't define _GNU_SOURCE on Windows,
	as _GNU_SOURCE has unintended side effects when compiling against
	newest mingw headers.


svn path=/trunk/; revision=7563
2008-09-30 14:04:35 +00:00
Johan Dahlin
761424465a Include "config.h" instead of <config.h> Command used: find -name
2008-06-21  Johan Dahlin  <jdahlin@async.com.br>

    * *.[ch]: Include "config.h" instead of <config.h>
    Command used:
    find -name \*.[ch]|xargs perl -p -i -e 's/^#include <config.h>/#include "config.h"/g'
    Rubberstamped by Mitch


svn path=/trunk/; revision=7092
2008-06-22 15:10:51 +00:00
Tor Lillqvist
fbecd2e8ae wint_t is short on Windows, and gcc warns: "wint_t is promoted to int when
2008-05-29  Tor Lillqvist  <tml@novell.com>

	* glib/gnulib/printf-args.c (printf_fetchargs): wint_t is short on
	Windows, and gcc warns: "wint_t is promoted to int when passed
	through ... (so you should pass int not wint_t to va_arg)." So do
	that then.


svn path=/trunk/; revision=6956
2008-05-29 02:43:49 +00:00
Hans Breuer
b877c83cdc removed -GD to compile with msvc9 (vs2008) with less complains
2007-12-09  Hans Breuer  <hans@breuer.org>

	* **/makefile.msc glib/makefile.msc.in : removed -GD to compile
	with msvc9 (vs2008) with less complains
	
	* glibconfig.h.win32.in : #define G_HAVE_ISO_VARARGS 1 for
	msv8 (vs2005) and above
	
	* glib/gfileutils.c : s/stricmp/_stricmp/
	* msvc_recommended_pragmas.h : work around Microsoft's premature 
	attempt to deprecate the C-Library

	* tests/makefile.msc.in : added checksum-test


svn path=/trunk/; revision=6076
2007-12-09 14:38:26 +00:00
Behdad Esfahbod
a38a770636 Fix EXTRA_DIST automake warnings. (#501107)
2007-12-03  Behdad Esfahbod  <behdad@gnome.org>

        * glib/gnulib/Makefile.am: Fix EXTRA_DIST automake warnings. (#501107)


svn path=/trunk/; revision=6029
2007-12-04 00:35:42 +00:00
21:06:47 Tim Janik
1e55738f31 initialize automake variables EXTRA_DIST and TEST_PROGS for unconditional
2007-11-21 21:06:47  Tim Janik  <timj@imendio.com>

	* Makefile.decl: initialize automake variables EXTRA_DIST and
	TEST_PROGS for unconditional appending via += in other makefiles.
	define recursive test targets: test, test-report, perf-report,
	full-report, as described here:
      http://mail.gnome.org/archives/gtk-devel-list/2007-November/msg00000.html

	* Makefile.am:
	* build/win32/vs8/Makefile.am, build/win32/dirent/Makefile.am:
	* build/win32/Makefile.am, build/Makefile.am:
	* docs/Makefile.am, docs/reference/Makefile.am:
	* docs/reference/glib/Makefile.am, docs/reference/gobject/Makefile.am:
	* gmodule/Makefile.am, tests/Makefile.am:
	* tests/refcount/Makefile.am, tests/gobject/Makefile.am:
	* glib/update-pcre/Makefile.am, glib/libcharset/Makefile.am:
	* glib/tests/Makefile.am, glib/pcre/Makefile.am:
	* glib/gnulib/Makefile.am, gobject/Makefile.am, m4macros/Makefile.am:
	* gthread/Makefile.am, glib/Makefile.am:
	include $(top_srcdir)/Makefile.decl, adapted EXTRA_DIST assignments.

	* glib/tests/Makefile.am: removed example testing rules.

	* glib/tests/testing.c: conditionalized performance and slow tests.

	* glib/gtestutils.h:
	* glib/gtestutils.c: work around g_test_config_vars not changing its
	exported value after value assignments, aparently due to symbol aliases.

	* glib/gtester.c: fixed off-by-one error which produced junk in logs.

	* configure.in: check for python >= 2.4 and provide $PYTHON for scripts.


svn path=/trunk/; revision=5914
2007-11-21 20:09:46 +00:00
Hans Breuer
770b29bad2 define PCRE_STATIC to reflect the inclusion of pcre as LIB, not
2007-03-17  Hans Breuer  <hans@breuer.org>

	* glib/makefile.msc.in glib/pcre/makefile.msc 
	  glib/update-pcre/update.sh : define PCRE_STATIC to reflect the 
	inclusion of pcre as LIB, not stand-alone DLL. Also set NEWLINE=-1
	to match any newline by default, use of ../../build/win32/make.msc

	* glib/gregex.h : minimal includes of <glib/*.H> instead of <glib.h>

	* glib/gnulib/makefile.msc : make use of ../../build/win32/make.msc

	* tests/regex-test.c(verbose): don't pass a string containing '%' 
	as first parameter to g_print ()
	(test_match) : for the unexpected case output pattern and string
	escaped

	* tests/child-test.c tests/slice-color.c : fix c99ism
	* tests/slice-test.c : fix c99ism and gccism
	* tests/mapping-test.c tests/base-64-tests.c : don't 
	#include <unistd.h> unconditionally
	* tests/option-test.c : use G_GINT64_CONSTANT() instead of direct LL

	* tests/makefile.msc.in : more tests build


svn path=/trunk/; revision=5423
2007-03-17 09:49:09 +00:00
Tor Lillqvist
b91d083561 Add -I$(top_srcdir)/glib so that gregex.h finds <glib.h>.
2007-03-15  Tor Lillqvist  <tml@novell.com>

	* glib/gnulib/Makefile.am (INCLUDES): Add -I$(top_srcdir)/glib so
	that gregex.h finds <glib.h>.

	* glib/update-pcre/Makefille.am-1: Add -DGLIB_COMPILATION so that
	we don't think g_ascii_table is dllimport.

	* glib/pcre/Makefile.am: Corresponding change.

	* glib/update-pcre/notdll.patch: New file. Drop
	dllimport/dllexport magic for the pcre symbols.

	* glib/update-pcre/Makefile.am: Dist it.

	* glib/update-pcre/update.sh: Apply notdll.patch.

	* glib/pcre/pcre.h: Corresponding change.

2007-03-15  Tor Lillqvist  <tml@novell.com>

	* glib/gtypes.h: Add comment to avoid misleading people with the
	large number of digits in G_PI etc. (#404338)


svn path=/trunk/; revision=5410
2007-03-15 15:17:17 +00:00
Michael Natterer
feb07512f0 removed all .cvsignore files. SVN doesn't need them.
2007-01-03  Michael Natterer  <mitch@imendio.com>

	* removed all .cvsignore files. SVN doesn't need them.


svn path=/trunk/; revision=5198
2007-01-03 11:22:36 +00:00
Matthias Clasen
558383d62c Fix bug 161288:
2006-12-18  Matthias Clasen  <mclasen@redhat.com>

        Fix bug 161288:

        * configure.in: Check for wcslen.

        * glib/gnulib/vasnprintf.c: Handle wcslen missing.
2006-12-18 14:38:07 +00:00
Behdad Esfahbod
3fb0fb2ef4 Add $(GLIB_DEBUG_FLAGS). (#362543, Peter Kjellerstedt)
2006-10-16  Behdad Esfahbod  <behdad@gnome.org>

        * glib/gnulib/Makefile.am: Add $(GLIB_DEBUG_FLAGS).  (#362543,
        Peter Kjellerstedt)
2006-10-16 12:51:54 +00:00
Matthias Clasen
48876d7fb5 Fix PLT issues 2006-09-30 14:06:45 +00:00
Tor Lillqvist
0d37c815d9 Fix crash when printing large 64-bit values on Win32 using the %I64x
2006-08-20  Tor Lillqvist  <tml@novell.com>

	* glib/gnulib/vasnprintf.c (vasnprintf): Fix crash when printing
	large 64-bit values on Win32 using the %I64x format. (#351034,
	Neil Piercy)
2006-08-20 13:39:48 +00:00
Matthias Clasen
1e795591bb Make long long printing work if snprintf is not available. (#332841,
2006-04-05  Matthias Clasen  <mclasen@redhat.com>

	* glib/gnulib/vasnprintf.c (vasnprintf): Make
	long long printing work if snprintf is not
	available.  (#332841, Michael McDonald)
2006-04-05 15:06:15 +00:00
Matthias Clasen
fb8e4a91e3 Undef libc functions before defining them, since they may also be macros.
2004-10-23  Matthias Clasen  <mclasen@redhat.com>

	* glib/gnulib/g-gnulib.h: Undef libc functions before defining
	them, since they may also be macros.  (#155177, Andrea Campi)
2004-10-24 01:15:08 +00:00
Matthias Clasen
eff7b0c9f2 Add top_srcdir to make srcdir != . work. (#145166, Kaz Sasayama)
Mon Jul  5 18:42:30 2004  Matthias Clasen  <maclas@gmx.de>

	* glib/gnulib/Makefile.am (INCLUDES): Add top_srcdir to
	make srcdir != . work.  (#145166, Kaz Sasayama)
2004-07-05 22:45:16 +00:00
Tor Lillqvist
267009b913 Handle empty digit string for precision correctly. (#142400)
2004-05-14  Tor Lillqvist  <tml@iki.fi>

	* glib/gnulib/vasnprintf.c (vasnprintf): Handle empty digit string
	for precision correctly. (#142400)

	For backward compatibility with the Trio implementation, make "ll"
	format modifer work on Win32, too. Change into "I64" before
	passing to the system printf. (#142433)

	* tests/printf-test.c (main): Add tests for the above.
2004-05-14 04:58:19 +00:00
Hans Breuer
a23e28657d added makefile.msc to EXTRA_DIST fixes #141563, Steve Lhomme
2004-05-01  Hans Breuer  <hans@breuer.org>

	* glib/gnulib/Makefile.am : added makefile.msc to EXTRA_DIST
	fixes #141563, Steve Lhomme
2004-05-01 13:48:24 +00:00
Matthias Clasen
76433d5365 Fix 64bit printing for MSVC builds (#119292, Hans Breuer):
Sun Nov  2 01:47:31 2003  Matthias Clasen  <maclas@gmx.de>

	Fix 64bit printing for MSVC builds (#119292, Hans Breuer):

	* configure.in (HAVE_INT64_AND_I64): Define for MSVC to
	include support for printing __int64 with format %I64 in
	the gnulib printf wrappers.
	* glib/gnulib/printf-args.h (enum arg_type): Add TYPE_INT64
	and TYPE_UINT64.
	* glib/gnulib/printf-args.h (struct argument): Add a_int64 and
	a_uint64 members.
	* glib/gnulib/printf-args.c (printf_fetchargs): Support
	TYPE_INT64 and TYPE_UINT64.
	* glib/gnulib/printf-parse.c (printf_parse): Parse I64 format
	modifier and map formats to TYPE_INT64.
	* glib/gnulib/vasnprintf.c (vasnprintf): Print TYPE_INT64 with
	format modifier I64.
	* glib/gnulib/README: Document the __int64 support.
2003-11-02 00:54:02 +00:00