Commit Graph

652 Commits

Author SHA1 Message Date
Natanael Copa affb05d446 abuild: use file descriptor 9 instead of 200
POSIX only requires that filedesriptors 0-9 are available for shell
redirections.
2012-02-28 07:27:29 +00:00
Natanael Copa 51dd555cf2 abuild: fix replaces_priority
was totally broke.
2012-02-22 14:23:16 +00:00
Natanael Copa e7574cab44 abuild: always add -k to curl in case http -> https redirects 2012-02-17 15:07:42 +00:00
Natanael Copa dabc0dea8c abuild: add support for replaces_priority 2012-02-17 15:07:25 +00:00
Natanael Copa e76192fa59 abuild: do not create the apk index as root 2012-02-17 14:03:49 +00:00
Natanael Copa 467db44962 abuild: no longer require wget in makedepends if https
we depend on curl instead
2012-02-17 13:51:01 +00:00
Natanael Copa c6263baeb9 abuild: remove dependency of sudo
use the abuild-sudo tool instead

fixes #951
2012-02-17 13:48:11 +00:00
Natanael Copa 817db0ea98 abuild: check for non-PIE suid files
fixes #955
2012-02-14 12:51:33 +00:00
Natanael Copa 7759f5e5df abuild: create the pkgusers/pkggroups as system users 2012-02-13 15:09:38 +00:00
Natanael Copa d66a5ee456 abuild: run postcheck for subpackages as well 2012-02-13 13:49:25 +00:00
Natanael Copa 92af0b8697 abuild: fix post check messages 2012-02-13 13:49:25 +00:00
Natanael Copa f7c56801e9 abuild: warn if world writable directories are found 2012-02-13 13:49:25 +00:00
Natanael Copa dd033763de abuild: warn if chown, chmod or chgrp found in install scripts 2012-02-13 13:49:25 +00:00
Natanael Copa 2f5545cd61 abuild: add msg2(), warning2() and error2()
For a second, indented message line.
2012-02-13 13:49:25 +00:00
Natanael Copa 761472d96b abuild: busybox flock does not support -w 2012-01-20 10:38:30 +01:00
Natanael Copa 01bab6e26d abuild: implement locking of downloaded files
We need locking Since the build servers use a shared download dir
and multiple vservers might want download same file at same time.

fixes #873
2012-01-20 09:22:06 +01:00
Natanael Copa 1187cc5c0a abuild: fail fetch on http 404 errors
curl does not fail by default. it downloads the 404 error page instead
so we need add -f option to curl.
2011-12-20 08:53:10 +01:00
Natanael Copa bea8577c43 abuild: cleanup. remove dead code
Not been used for ages.
2011-12-19 13:10:43 +01:00
Natanael Copa c98b47b7ad abuild: make curl follow redirects 2011-12-16 17:02:16 +01:00
Natanael Copa df05d495b0 abuild: use curl by default. fallback to wget if curl is missing
fixes #871
2011-12-16 16:02:46 +01:00
Natanael Copa ff53e77643 abuild: fix typo 2011-12-14 10:55:53 +01:00
Natanael Copa 36c87807d2 abuild: fix typo and prettify warning message 2011-12-14 10:55:30 +01:00
Natanael Copa 57e05c4c01 abuild: allow override sanitycheck 2011-12-14 09:54:43 +00:00
Natanael Copa b0f9ec91f7 abuild: verify names of subpackages
This is to avoid things like:
http://git.alpinelinux.org/cgit/aports/commit/?id=81c0a4bb37e709ebc5add8394331d28209a61b6f
2011-11-01 08:50:20 +00:00
Natanael Copa 990b1f0607 abuild: fix pkgdesc and install_if for -lang packages 2011-10-03 18:36:58 +00:00
Natanael Copa 7fb94045b2 abuild: add warning if /usr/share/local found 2011-10-03 11:19:25 +00:00
Natanael Copa 0b83646614 abuild: implement automatic -lang subpackages 2011-09-30 06:47:28 +00:00
Natanael Copa 43f888ad5e abuild: make it possible to override lang_subpkg
We alos introduce $langdir where you can set other dir to look for
localization dirs.
2011-09-02 09:35:55 +00:00
Natanael Copa 77eb895cc7 abuild: fix install script verification
we might have '.' in pkgname as in gtk+2.0
2011-06-30 07:52:46 +00:00
Natanael Copa f8813c1565 abuild: do not move *.la files to dev package and exit with error if found
To be allowed to keep the .la files you need to add 'libtool' to
$options
2011-06-29 13:47:56 +00:00
Natanael Copa f5a3a48da0 abuild: fix bug in install script detection 2011-06-28 11:31:40 +00:00
Natanael Copa 5fd0c10e8c abuild: implement new format for triggers variable
it contains a list with all triggers for all subpackages.

separate trigger script from path list with '='
separate paths in path list with ':'

example:

pkgname="foo"
subpackages="foo-libs foo-dev"
triggers="foo.trigger=/usr:/usr/lib/foo
	foo-libs.trigger=/usr:/usr/share/foo"
2011-06-27 20:59:30 +00:00
Natanael Copa f597a6e68c abuild: support for new style install scrits
We need to list all install scripts in $install rather than specify it
in subpackage
2011-06-27 20:59:30 +00:00
Natanael Copa 42df5722ee abuild: check sanity of install scripts
we check early that suffix is valid and that we have a matching
pkgname or subpackage
2011-06-27 20:59:29 +00:00
Natanael Copa 529438949e abuild: do debug builds with DEBUG=1 2011-05-18 06:19:18 +00:00
Natanael Copa 7798ed0c5a abuild: be quiet when uninstalling build dependencies
We don't really need to see what packages gets uninstalled, but error
messages might be nice to see. So we are quiet when uninstalling.
2011-05-05 08:36:00 +00:00
Natanael Copa 81b439cec2 abuild: reset triggers for subpackages
only main package has the trigger
2011-04-18 08:34:56 +00:00
Natanael Copa 0a2f9eb582 abuild: fix user creation when group exists 2011-04-17 12:55:51 +00:00
Natanael Copa b027ecf2c7 abuild: fix for REPODEST
we need set the $CARCH in the package destination
needs also to be passed over for recursive action
2011-04-06 09:30:33 +00:00
Natanael Copa c9a1158c79 abuild: remove broken noarch stuff. force CARCH for abuildrepo 2011-04-04 13:52:17 +00:00
Natanael Copa 3ac0a8e082 abuild: move abuildrepo to ~/.cache/abuild/$repo
We no require apk-tools-2.1
2011-04-04 13:00:22 +00:00
Natanael Copa 8f6f8763cf abuild: fix check if abuildindex is up 2 date 2011-04-04 11:18:29 +00:00
Natanael Copa 62a87c97fb Merge branch '2.7' 2011-04-01 13:39:23 +00:00
Natanael Copa 828d8a7e16 abuild: always fail when checksums does not match 2011-04-01 12:24:40 +00:00
Natanael Copa 382e470396 Merge branch '2.7'
Conflicts:
	Makefile
2011-03-31 09:56:47 +00:00
Natanael Copa 701be9224c abuild: add origin in .PKGINFO 2011-03-31 09:49:51 +00:00
Natanael Copa 0f27ed17ab abuild: fix for apk-tools-2.0.x
apk-tools-2.0's apk index will not show the arch so we need to use
tar to find arch if we have old apk. We prefer use apk index since
it will only read first block of file, regardless size, while tar
will read entire file. Reading entire file is slow if file is big.

So we check apk --version and use tar if needed, and apk index if
possible.
2011-03-30 14:20:15 +00:00
Natanael Copa 663aa8bca5 abuild: create $arch and noarch dirs for abuildrepo 2011-03-30 13:54:49 +00:00
Natanael Copa 995797f4a2 Merge branch 'wip' 2011-03-30 09:10:56 +00:00
Natanael Copa 138cfd7027 abuild: wait for lockfile on delete of dependencies 2011-03-30 09:10:11 +00:00
Natanael Copa 99ffea8acd abuild: use $repo/$arch for abuildrepo
This is so apk-tools-2.1 works
2011-03-30 09:06:48 +00:00
Natanael Copa 3af17782ad abuild: fix md5check
we need use "$srcdir"
2011-03-29 13:06:03 +00:00
Natanael Copa d68c2e2912 abuild: fakeroot fix when running as root 2011-03-29 12:23:30 +00:00
Natanael Copa e6b33c688d abuild: use $SUDO instead of 'sudo'
So SUDO="sudo -E" works for http proxy settings
2011-03-29 12:17:35 +00:00
Jeremy Thomerson a632d08fd2 delete remote source files that fail the md5 checksum test
Currently, if the build server downloads a file that fails the md5sum check
for some reason (perhaps interrupted download, etc), the file is never deleted
so the build can not succeed until someone manually deletes the bad file.  This
change deletes any file that is a remote source file / package that fails the
md5sum check.  The subsequent rebuild will then be forced to download the file
again.
2011-03-29 06:02:54 +00:00
Natanael Copa 149521f2dc abuild: do not set noarch for now
Our build infrastruc needs to handle it
2011-03-17 10:10:58 +00:00
Natanael Copa 947681e9d1 abuild: add maintainer info to .PKGBUILD
We can either set maintainer="..." in APKBUILD or use it as comment.
2011-03-08 10:08:01 +00:00
Natanael Copa d3efd64ab1 abuild: add last commit hash to .PKGINFO
This can be useful for package browser.
2011-03-08 09:50:17 +00:00
Natanael Copa a4a64e3f4c abuild: bugfix in dep tracing
due to unintialized and non-local variable the tracing of deps
didnt work as expected when dependencies was provided by the apkbuild
itself. (libgcc ended up depending on libgcj which depended on binutils)
2011-03-04 22:39:49 +00:00
Natanael Copa 37c29649f7 abuild: -f will build even if arch is missing 2011-03-04 22:39:49 +00:00
Natanael Copa 0db502b906 abuild: only warn when we think there should have been noarch
and we dont want -dev packages to be noarch
2011-03-04 22:39:48 +00:00
William Pitcock 0187915cc2 default_doc/default_dev: enhanced pkgdesc 2011-01-27 18:46:43 -06:00
Natanael Copa 5d9012c09a abuild: add support for language packs 2011-01-04 10:32:12 +00:00
Natanael Copa 2182953390 abuild: supporrt for install_if. remove unused 'backup' 2011-01-04 09:15:05 +00:00
Natanael Copa 0472849c0c abuild: implement initdcheck
this check verifies that the *.initd scripts are #!/sbin/runscript
2011-01-04 09:05:54 +00:00
Natanael Copa f580e6657a abuild: support for saveas-* in sourcecheck 2011-01-03 15:59:52 +00:00
Natanael Copa 470f052142 abuild: implement sourcecheck
This subcommand verifies if upstream sources still exists and echoes
an error if it does not.

This is supposed to be used from a script that checks the validity
of source regularily.
2011-01-03 15:38:40 +00:00
Natanael Copa 308a1a27f4 abuild: only set xterm title if USE_COLOR is enabled 2011-01-03 15:29:37 +00:00
Natanael Copa a83cdde510 abuild: only install .makdepends-* if there are deps 2011-01-03 15:02:19 +00:00
Matt Smith 1a67bb56a3 abuild: trivial update to new saveas-*:// support
Removed the asterisk from the beginning of the https check, and moved the
saveas- check above.
2011-01-03 13:41:11 +00:00
Natanael Copa 09ea4c1328 abuild: skip md5sum check if in force mode 2010-12-31 18:53:13 +00:00
Matt Smith 3386818e53 abuild: created 'saveas-*://' URI support
'saveas-*://' URI support has been created for use with the source= line of
APKBUILD files.

It allows for a remote source file to be saved with an arbitrary filename.  This
is useful in situations where the last component of the URI is not the preferred
filename.

Here's how it works.  Say we have the following URI:

  http://oss.example.org/?get=software&ver=1.0

Both Busybox Wget and GNU Wget will save this with the filename:

  ?get=software&ver=1.0

To get around this, we could use cURL to save the file using the filename in the
HTTP response headers:

  $ curl -JO "http://oss.example.org/?get=software&ver=1.0"

Or we could use this 'saveas' hack.  Essentially, the original URI is converted
to read:

  saveas-http://oss.example.org/?get=software&ver=1.0/software-1.0.tar.gz

In the download process, the 'saveas-' portion is removed, and the file is
downloaded from the original URI, but is saved with the filename being the last
component of the URI.  In this case, it will be saved as 'software-1.0.tar.gz'.

It is designed so that it works with any protocol supported by abuild.
For example:

  saveas-ftp://oss.example.org/?get=software&ver=1.0/software-1.0.tar.gz

Check it out and let me know what you think.

Thanks,
Matt
2010-12-30 20:33:02 +00:00
Natanael Copa 21730b7864 abuild: fix check for arch specific binaries
we now fail if noarch is set wrong
2010-12-30 12:53:44 +00:00
Natanael Copa 650c0344ff abuild: set arch to noarch for -doc packages 2010-12-30 10:39:40 +00:00
Natanael Copa 5e41f09733 abuild: post check arch
We check if noarch is properly set
2010-12-30 10:36:42 +00:00
Natanael Copa e524bc68e9 abuild: improve output messages for dep tracing 2010-12-17 18:57:49 +00:00
Natanael Copa 94667e9993 abuild: support arch=all 2010-12-15 13:43:52 +00:00
Natanael Copa 2951b99c70 abuild: look for so dependencies in RPATH too
Some .so files have a rpath where to look for the needed .so. When tracing
package dependencies we also have a look there.

This should fix problem when the .so is not in standard location, /usr/lib
or /lib. (for example freeradius plugins)

While here we also reorganize things so we only call apk info --who-owns
once for each package instead of once for each needed .so. This should
speed up things when there are many needed .so files.
2010-12-15 13:01:13 +00:00
Natanael Copa 59df627613 abuild: multiarch support
- add arch to .PKGINFO
- exit with success if package is not in arch
2010-12-14 13:27:00 +00:00
Natanael Copa a111620bc8 abuid: check that CARCH and CHOST is set 2010-12-13 07:35:09 +00:00
Natanael Copa f9b62b89a6 abuild: automatically add libgcc to depends when libpthread is found
see http://redmine.alpinelinux.org/issues/409
2010-08-31 13:50:06 +00:00
Natanael Copa a5937e5c45 abuild: support for alternative awks
some awk's does not understand -F "\ " and treats that as special space
2010-08-27 13:34:33 +00:00
Natanael Copa 030fa98065 abuild: support for unpacking .tar.xz 2010-08-12 07:08:47 +00:00
Natanael Copa 8bf6428c8f abuild: include vapi and gir-* in -dev package 2010-07-07 18:25:57 +00:00
Natanael Copa c30c346362 abuild: detect and report conflicting dependencies properly 2010-06-30 14:59:07 +00:00
Natanael Copa 3137648228 abuild: move the .so symlinks to -dev packages
Those are needed when linking to the lib and not during runtime.

Having those in the -dev package makes it easier to allow different
versions of same libs to be installed side-by-side.
2010-05-18 12:45:17 +00:00
Natanael Copa a06296168f abuild: allow DISTFILES_MIRROR be a local path
based on patch from Andrew Manison. Thanks!
2010-05-18 09:52:44 +00:00
Natanael Copa e9509e5ffe abuild: support for -c and -m options to enable/disable colors
and make sure those options are passed over when building recursively

Based on patch from Andrew Manison. Thanks!
2010-05-18 09:42:53 +00:00
Natanael Copa 072e93458d abuild: break circular deps when building recursively 2010-05-06 21:02:07 +00:00
Natanael Copa 92417870e6 abuild: properly pass over args when building recursively 2010-05-06 19:37:52 +00:00
Natanael Copa 9d0a812458 abuild: properly add $BUILD_BASE to dependency chain
We want build the toolchain and build tools first
2010-05-06 18:38:13 +00:00
Natanael Copa e3c46369fd abuild: bugfix for versioned dependencies
we need strip all '<>=' chars not only last
2010-05-06 18:31:36 +00:00
Natanael Copa 18c1dde2de abuild: only update abuildrepo index if needed
speeds up abuild -R a bit
2010-05-06 08:20:59 +00:00
Natanael Copa ed0613adda abuild: rename apkcache to abuildrepo
To avoid confusing with the /etc/apk/cache
2010-05-06 07:58:44 +00:00
Natanael Copa 5a3bb63846 abuild: force pkgrel in APKBUILD
its needed for bumping pkgrel with sed and similar
2010-05-04 11:28:44 +00:00
Natanael Copa f795040b6b abuild: support for overriding apk binary
so we can do: APK=apk.static abuild ....
2010-05-04 08:32:22 +00:00
Natanael Copa f4e9b5d3a9 abuild: fix for abuild -R
we only enter dependencies dirs in same repo
2010-05-04 08:28:13 +00:00
Natanael Copa 36d446263c abuild: support for building simple tar.gz files of target
When building with crosscompile to bootstrap a new target it might
be handy to not include the dependencies etc.
2010-04-28 16:04:37 +00:00
Natanael Copa c6f4cb7286 abuild: use fetch_uri_mirror when downloading sources 2010-04-19 13:48:57 +00:00
Natanael Copa 064c0fac8e abuild: only trace dependencies from current repo
This avoids confusion when abuild picks dependencies from testing
when building main.
2010-04-15 15:53:28 +00:00
Natanael Copa a0c0ae76e3 abuild: download from DISTFILES_MIRROR first if set 2010-04-15 15:52:38 +00:00
Natanael Copa 92d947b000 abuild: wait 30 seconds for apk lockfile. improve error reporting 2010-03-02 11:01:15 +00:00
Natanael Copa 3ea1ead589 abuild: dont check version number if nodeps is specified
This option is normally used for bootstrapping a build env. Chances are big
that apk-tools is not around.
2009-12-16 09:25:52 +00:00
Natanael Copa d87b10b9af abuild: implement getpkgver, default_fetch and default_unpack
to make life easier for volatile packages
2009-11-24 10:53:58 +00:00
Natanael Copa 78ca93d237 abuild: use pax-utils's scanelf to find binaries to strip 2009-11-06 09:57:34 +00:00
Natanael Copa 9400ec0152 abuild: fix detection of pkgconfig dependency 2009-11-02 09:26:09 +00:00
Natanael Copa 64d70cc4b3 abuild: exit with error if run as root
override with -F
2009-10-24 21:01:29 +00:00
Natanael Copa 036557c8c0 abuild: make it possible override fakeroot 2009-10-24 20:53:31 +00:00
Natanael Copa f150027100 abuild: fix so APKBUILD env var works properly
We also make sure we source the APKBUILD when we are in the directory
holding the APKBUILD file. Some of the packages sources others
with relative references. (for example kernel 3rd party packages)
2009-10-24 20:37:20 +00:00
Natanael Copa c50ab80bfa abuild: minor bugfix: define $program 2009-10-24 20:11:40 +00:00
Natanael Copa c9616e9d9e newapkbuild: move code from abuild to new script
try keep code in abuild cleaner by moving out creation of new apkbuild
to separate script.
2009-10-24 20:03:06 +00:00
Natanael Copa 74debd67ce abuild: minor cleanup 2009-10-24 19:18:35 +00:00
Natanael Copa 3b7ab34e67 abuild: implement prepare()
prepare is run before build(). this allows uses to do patching before
configuring and building in a separate step.
2009-10-23 16:28:34 +00:00
Natanael Copa f138d6704b abuild: bugfix. allow apkbiudls without build() 2009-10-23 13:12:32 +00:00
Natanael Copa 542b9cf486 abuild: dont run build() in fakeroot if package() exist
fakeroot seems do some kind of locking which kills performance on
multicores processors. We can run "make" and "make install" in 2 steps
with only hte latter in fakeroot.
2009-10-23 09:57:04 +00:00
Natanael Copa c1be67be8a abuild: include repo description and version in temp apk cache 2009-09-03 16:38:07 +00:00
Natanael Copa f24e997104 abuild: strip versions from dependencies when building recursively 2009-08-31 09:12:04 +00:00
Natanael Copa a1bf67a46c abuild: allow pkgver=volatile 2009-08-21 14:25:08 +00:00
Natanael Copa 32f3fce837 abuild: implement pkgusers/pkggroups 2009-08-21 07:54:53 +00:00
Natanael Copa e0f546896f abuild: no missing dependencies might happen 2009-08-17 13:58:26 +00:00
Natanael Copa 5b8d1709da abuild: the -dev pckages should depend on all subpackages 2009-08-17 13:02:37 +00:00
Natanael Copa df8e468f0e abuild: implement triggers
and install scripts should not be in $source
2009-08-14 05:56:34 +00:00
Natanael Copa d8907beacb abuild, alpine.mk: use --repository instead of --repo 2009-08-10 13:05:56 +00:00
Natanael Copa e1dff71595 abuild: initial support for versioned dependencies 2009-08-05 13:55:35 +00:00
Natanael Copa b1f792b023 abuild: implement -d for disable dependency checking
This is needed when bootstrapping the system.
2009-08-03 13:06:38 +00:00
Natanael Copa 15a3f24286 abuild: fix for dynamic dependency detection 2009-07-29 20:01:52 +00:00
Natanael Copa 3c7eb0dff9 abuild: make index readable 2009-07-27 14:28:15 +00:00
Natanael Copa fad6df6eaf abuild: minor bugfix 2009-07-24 14:56:28 +00:00
Natanael Copa 28b7f5d2b1 abuild: add pkgconfig to depends if needed. misc fixes 2009-07-24 09:24:42 +00:00
Natanael Copa 53b17143d2 abuild: use APKINDEX.tar.gz rather than APK_INDEX.gz 2009-07-23 09:46:36 +00:00
Natanael Copa c2a0126ea2 abuild: remove broken links in abuild temp repo. sign the control.tar.gz 2009-07-23 09:32:14 +00:00
Natanael Copa ac09f44927 abuild: sign index with abuild-sign 2009-07-23 08:43:28 +00:00
Natanael Copa be9fa503bc abuild: initial support for new apk format 2009-07-20 14:56:01 +00:00
Natanael Copa bd9f1a415a core/abuild: fix options order to apk add 2009-07-20 12:01:16 +00:00
Natanael Copa 501e5dc8c4 abuild: upgrade dependencies when building recursive 2009-07-13 11:11:15 +00:00
Natanael Copa a3dca8d66a abuild: use apk version --check to verify the pkgver 2009-06-09 11:27:42 +00:00
Natanael Copa 99ae7bd9c3 abuild: force single space be separator when parsing scanelf output
otherwise will awk not detect empty fields
2009-06-04 18:14:47 +00:00
Natanael Copa 44247711a4 abuild: up2date handle apkcache properly
abuild will not consider package up2date unless apk cache is up2date
2009-06-03 21:29:58 +00:00
Natanael Copa 2c907ddc34 abuild: warn if g++ is in makedepends. fix for dynamic deps 2009-06-03 20:55:45 +00:00
Natanael Copa 5b00cca758 abuild: fix for detecting self-provided dependencies 2009-06-03 20:20:59 +00:00
Natanael Copa a878a54660 abuild: bugfix: find deps in subpackages and fail if deps not found 2009-06-03 19:50:06 +00:00
Natanael Copa 2d6f0ab38d abuild: initial support for autodetection of dependencies 2009-06-03 19:23:32 +00:00
Natanael Copa 36080a48f7 abuild: rename abuildrepo to apkcache 2009-06-03 11:26:48 +00:00
Natanael Copa 9d616a1346 abuild: add configurable apk cache 2009-06-03 11:24:29 +00:00
Natanael Copa bdc6182749 abuild: use build-base meta package as hard makedepends 2009-06-03 11:15:55 +00:00
Natanael Copa 027f227852 abuild: pull in makedepends by using virtual packages in abuildrepo
Basicly, let apk-tools deal with the dependencies rather than let abuild do it
2009-06-03 08:37:05 +00:00
Natanael Copa 2219b258cf abuild: use apk index -d to update the abuildrepo index 2009-05-14 14:41:12 +00:00
Natanael Copa 83f9d177ed abuild: create symlink to package in tmprepo
The tmprepo is a temporary repository used by abuild to handle the
dependencies of the newly built packages.
2009-05-08 20:34:30 +02:00
Natanael Copa 2fd4128e20 abuild: rename pkgdirbase to pkgbasedir 2009-05-08 19:19:32 +02:00
Natanael Copa 231d406de6 abuild: create .provides-so file in package dir
This will later be used to figure out the dynamic dependencies.
2009-05-08 19:19:32 +02:00
Natanael Copa ca65c4b791 abuild: prepare pkg dirs/meta files and create packages separately. Dependency speedup.
Run all subpackage functions and prepare the dirs first and create the
package itself later on. This will make it possible to automatically trace
the dependencies.

Also, speed up the detection of which makedeps are installed and which needs
to be built/installed. this requires apk-tools_pre11.
2009-05-08 15:01:14 +00:00
Natanael Copa 3d79fb7036 use .in files for scripts 2009-05-08 13:33:34 +00:00