Commit Graph

1237 Commits

Author SHA1 Message Date
Duncaen
c5784e9cc3 bin/xbps-uchroot: allow relative chroot directory 2016-09-25 22:23:05 +02:00
Duncaen
81673d69c7 bin/xbps-rindex: fix memleaks in index_add 2016-09-25 21:27:38 +02:00
Roman Neuhauser
d0b4089e6e xbps-install(1), xbps-remove(1) point to xbps-pkgdb(1)
... from descriptions of -A and -u (xbps-install) and -o (xbps-remove).
2016-09-21 14:56:17 +02:00
Roman Neuhauser
025b133025 xbps-pkgdb(1): extend discussion of package modes
description of implications of the various modes was scattered across
xbps-pkgdb(1), xbps-install(1), xbps-remove(1).
2016-09-21 14:56:17 +02:00
Michael Gehring
3dce6ab1ed bin/xbps-query: add --list-repolock-pkgs 2016-09-21 14:11:04 +02:00
Duncaen
414256292a bin/xbps-uchroot: mount / as private 2016-09-20 17:45:56 +02:00
Duncaen
bc5b38218a bin/xbps-uchroot: call clone only once if its successful 2016-09-20 17:39:13 +02:00
Enno Boland
7967efc1e0 xbps-install: do not fail on update if any of the provided packages are up to date.
addresses #194
2016-09-14 18:12:54 +02:00
Enno Boland
1ffac73f54 Merge pull request #192 from jantatje/clean-cache-dry-run
xbps-remove: fix --dry-run for --clean-cache
2016-09-07 22:03:28 +02:00
Jan Tatje
46be602e28 xbps-remove: fix --dry-run for --clean-cache
`xbps-remove --clean-cache --dry-run` did not consider the
--dry-run flag, this has been fixed.
2016-09-07 21:56:01 +02:00
Juan RP
e4907adfe7 Merge pull request #187 from weakish/free-space-message
Change free space message to avoid ambiguity.
2016-09-07 07:49:12 +02:00
Michael Gehring
3a1892028a xbps-checkvers: fix build with glibc-2.24 (#188) 2016-08-15 12:44:25 +02:00
Jakukyo Friel
4e2823ffa5
Change free space message to avoid ambiguity.
`xbps-install` will report free space available on disk wording:

> Free space on disk: ...

'free' above is supposed to be  an adjective.
But 'free' can also be a verb,
thus the above message can be interpreted as free some space on disk.

'Free' is now changed to 'Available' to avoid ambiguity.
2016-08-11 21:04:28 +08:00
Andrea Brancaleoni
03d29f64b8 bin/xbps-uchroot: add docker support (#176) 2016-07-17 20:41:12 +02:00
Juan RP
9046727301 xbps-uhelper: fix a warning reported by clang-3.8.1. 2016-07-17 11:34:39 +02:00
Juan RP
0cff982e7b xbps-rindex/sign: simplify. 2016-07-13 08:37:04 +02:00
Enno Boland
35fa3b5808 xbps-create: remove mmap to load files to archive. 2016-06-17 17:10:10 +02:00
Juan RP
5117ff84a2 xbps-uchroot: do not fail if the mount MS_MOVE operation fails.
This could happen if chrootdir is in a shared mount or when it's not
a real mountpoint. Just continue with chroot().
2016-04-30 17:34:32 +02:00
Juan RP
447a2f43ad xbps-install/util.c: do not check errno for isatty().
Fixes line truncation in musl. As @chneukirchen pointed out, POSIX
does not need to set errno. Just use its return value.
2016-04-24 14:02:52 +02:00
Michael Gehring
dedc93d17d xbps-create: add -c/--changelog 2016-04-23 08:42:15 +02:00
Juan RP
6272280fcf xbps-uhelper: support 'XBPS_{,TARGET_}ARCH' env vars in the 'arch' target. 2016-04-13 08:53:26 +02:00
Juan RP
13395d8a50 Merge pull request #159 from Gottox/reproducible-create
Reproducible create
2016-04-07 16:26:38 +02:00
Enno Boland
ba2074a1cc xbps-rindex: use consistent output format 2016-03-31 08:10:14 +02:00
Enno Boland
aa90201b2d bin/xbps-create: remove xentry struct and clean up 2016-03-27 14:46:16 +02:00
Enno Boland
61d2361646 bin/xbps-create: process_entry_file uses dictionary instead of linked list now. 2016-03-27 14:46:13 +02:00
Enno Boland
25fa00ea46 bin/xbps-create: process dictionary instead of linked list. 2016-03-27 14:45:57 +02:00
Enno Boland
b2c7fa8846 bin/xbps-create: search for inode dublication using xbps_dictionary_t instead of linked list. 2016-03-27 14:45:41 +02:00
Enno Boland
5c18a43c1c bin/xbps-create: construct proplist objects in ftw.
This is the first commit in a series to make xbps-create build
reproducable packages.

xbps-create uses nftw(3) to walk through all files. As nftw doesn't
sort files it may happen that the resulting packages will have
different checksums due to differentiating orders of files on
different filesystems.

To solve this issue xbps-create uses xbps_directory_t, which is always
sorted, instead of a simple linked list.
2016-03-27 14:44:47 +02:00
Enno Boland
855bc915e5 xbps-rindex: replace puts calls with printf 2016-03-22 09:47:25 +01:00
Enno Boland
2e6b2a6c94 xbps-rindex: remove empty stage file on cleanup. 2016-03-22 09:47:19 +01:00
Enno Boland
e1a76b13e5 xbps-rindex: cleanup stage area on -c too. 2016-03-21 11:39:43 +01:00
Enno Boland
3431715d67 xbps-rindex: consider stage area when removing packages. 2016-03-21 10:50:25 +01:00
Enno Boland
4d1ee3b01d xbps-rindex: check for consistent shlibs
When adding packages to the index, xbps-rindex will check if the
consistency of shlibs is broken by a package. If so, rindex will create
a stage file and commit the packages there. Once the consistency is restored,
rindex -a will commit the stage area back to the public repo and delete the
stage file.
2016-03-21 08:31:18 +01:00
Enno Boland
897ac238c4 Revert "xbps-rindex: check for consistent shlibs"
This reverts commit 5f4e1ad43e which was
accidently checked in in the master branch.
2016-03-20 21:40:22 +01:00
Enno Boland
5f4e1ad43e xbps-rindex: check for consistent shlibs
When adding packages to the index, xbps-rindex will check if the
consistency of shlibs is broken by a package. If so, rindex will create
a stage repository and commit the packages there. Once the consistency
is restored, rindex -a will commit the stage area back to the public
repo and delete the stage file.
2016-03-20 21:36:30 +01:00
Enno Boland
3bcb2d6543 xbps-query: remove doubled incrementation
Otherwise clang will complain with the following message:

  search.c:67:3: error: variable 'i' is incremented both in the loop
  header and in the loop body [-Werror,-Wfor-loop-analysis]
2016-03-20 10:02:26 +01:00
Michael Gehring
618e504d30 actually use HAVE_FDATASYNC 2016-02-08 15:09:43 +01:00
Juan RP
27e36fcbf9 xbps-fbulk(1): ignore xbps-src msgs (those starting with '=>').
Reported by @chneukirchen.
2016-02-05 11:44:22 +01:00
Juan RP
b759ca4b07 xbps-install(1): do not exit if pkg is up-to-date in dry-run mode.
Close #145
2016-02-05 11:27:40 +01:00
Christian Neukirchen
034d3591b3 xbps-query: generate -o output from a single printf.
Else parts written by multiple threads can become mixed up.
2016-01-20 13:41:13 +01:00
Enno Boland
e7a2c08629 bin/xbps-query: document in the manpage that remote repositories must be signed. #141 2015-12-24 13:48:26 +01:00
Enno Boland
93df7953f5 bin/xbps-install: document in the manpage that remote repositories must be signed. #141 2015-12-24 13:48:21 +01:00
Juan RP
83b5b357cb xbps-rindex/sign: fix a memleak found by clang-analyzer. 2015-12-21 17:16:00 +01:00
Juan RP
68d84d89c1 xbps-fbulk: fix a memleak found by clang-analyzer. 2015-12-21 17:07:43 +01:00
Juan RP
a00c7b1c4b xbps-checkvers: add some assertions. 2015-12-21 16:51:24 +01:00
Joey Gouly
b4ef9954e7 Fix #120 by stripping comments from the end of lines.
The debug printing is also moved after variable substitution.
Now it prints:
  foo/template: _var foo
  foo/template: pkgname foo

It used to print:
  foo/template: _var foo
  foo/template: pkgname ${_var}
2015-10-31 16:49:55 +00:00
Juan RP
5170566e64 xbps-create.1: bump date. 2015-10-31 13:04:21 +01:00
Joey Gouly
b06ce15136 Allow relative symlinks in xbps-alternatives. 2015-10-31 11:54:01 +00:00
Juan RP
3e6651d286 xbps-alternatives(1): implemented -g <grp> -l. 2015-10-31 12:11:21 +01:00
Juan RP
f69171320d xbps-remove: fix previous correctly: process XBPS_STATE_ALTGROUP states. 2015-10-31 12:07:06 +01:00
Juan RP
85f75c2531 xbps-remove: do not ignore unknown states in the state cb. 2015-10-31 12:01:22 +01:00
Juan RP
c274363b0e xbps-install/state_cb: do not treat unknown states as error if desc is not NULL. 2015-10-30 14:47:25 +01:00
Juan RP
f73461a854 xbps-query: fix printing the alternatives obj. 2015-10-30 14:10:01 +01:00
Juan RP
802158e324 xbps-alternatives: fix -l. 2015-10-30 13:37:24 +01:00
Juan RP
6c7c0843f0 xbps-create.1: document --alternatives. 2015-10-30 12:30:49 +01:00
Juan RP
cb857dfc27 Alternatives framework for xbps (2/2).
See xbps-alternatives(1) for more information.

Thanks to all who helped to design this and for fixing grammar in
the manual page.
2015-10-30 12:24:46 +01:00
Bheesham Persaud
0a0cd42682 Minor changes to the documentation. 2015-10-30 02:01:29 -04:00
Juan RP
637c087173 xbps-*: do not log to console with syslog enabled. Close #123 2015-10-29 07:16:49 +01:00
Juan RP
fa7d8bdfc5 xbps-xxx.1: responsability -> responsibility. 2015-10-28 10:03:41 +01:00
Juan RP
2c40d0a334 xbps-fbulk.1: tyop: responsability -> responsibility (thanks @asergi). 2015-10-28 10:02:29 +01:00
Juan RP
4211f5cd09 New manual page for xbps-fbulk(1). 2015-10-28 09:37:09 +01:00
Juan RP
4fbfe6e823 xbps-create: fix a warning found by @dominikh without --enable-debug. 2015-10-28 06:43:25 +01:00
Juan RP
ae8db1ce98 xbps-remove.1: document -n/--dry-run output. 2015-10-20 09:16:38 +02:00
Juan RP
5eac1e929a xbps-install.1: document -n/--dry-run output. 2015-10-20 09:15:47 +02:00
Juan RP
24af8cde9b xbps-install(1): implement #109.
-n/--dry-run mode now prints "installed_size" obj as 5th argument,
and "filename-size" as 6th argument (if available).

Close #109
2015-10-19 19:02:26 +02:00
Juan RP
faeff38ca2 Alternatives framework (1/2) (WIP). 2015-10-18 10:38:35 +02:00
Enno Boland
f1617441db xbps-query: fail on trailing parameters. 2015-09-23 13:33:51 +02:00
Juan RP
21be2318cf xbps-create(1): support '--compression none' to skip any compression format. 2015-09-03 12:34:29 +02:00
Enno Boland
2a6b14ae74 Merge pull request #111 from Gottox/no-build-date
xbps-create: do not add a build-date property to packages.
2015-09-03 09:26:53 +02:00
Enno Boland
69ee33c592 xbps-rindex: set build-date from mtime in repository-index. 2015-09-03 09:20:04 +02:00
Juan RP
8081751f86 libxbps: print in verbose mode what pkgs are added to the transaction.
Useful to know why a transaction cannot be completed when there are
unresolved reverse dependencies.

Requested by @chris2.
2015-09-02 18:56:20 +02:00
Enno Boland
9de0d8a60d xbps-create: do not add a build-date property to packages. 2015-08-19 16:05:51 +02:00
Juan RP
7ed6a8940f xbps-checkvers: print real errno returned by opendir(). 2015-08-17 15:51:41 +02:00
Juan RP
0d5385ad2b xbps-checkvers: fixed an endless loop with "reverts" containing extra alphanumeric chars. 2015-07-27 09:44:25 +02:00
Juan RP
36026451ce Fix some insecure temporary files reported by Coverity. 2015-07-26 09:02:04 +02:00
Juan RP
ffbdfeef63 xbps-rindex/index-clean: fix a minor resource leak (CID #98689). 2015-07-26 08:38:12 +02:00
Juan RP
58074b5358 xbps-fbulk: ignore remove(2) return value (CID #98680). 2015-07-26 08:21:46 +02:00
Juan RP
582de078f4 xbps-rindex/sign: ignore fstat(2) return value (CID #98679). 2015-07-26 08:21:00 +02:00
Juan RP
61ec2d4540 xbps-fbulk: ignore rename(2) return value (CID #98678). 2015-07-26 08:19:53 +02:00
Juan RP
e90ed618e8 xbps-install/transaction: minor resource leak (CID #98690). 2015-07-26 08:18:49 +02:00
Juan RP
5f56b130fc xbps-rindex/index-clean: fix a resouce leak (CID #98689). 2015-07-26 08:17:17 +02:00
Juan RP
7d7f08b559 xbps-rindex/sign: fix a resource leak (CID #98687). 2015-07-26 08:12:22 +02:00
Juan RP
9d70fcd8d0 xbps-rindex/index-clean: handle possible NULL pointer derefs (CID #98685). 2015-07-26 08:06:38 +02:00
Juan RP
97c8eb0c36 xbps-rindex: fix a double close (CID #98694). 2015-07-26 07:59:16 +02:00
Juan RP
55e9752aee xbps-uhelper: fetch: print errors in stderr instead. 2015-06-22 20:03:40 +02:00
Juan RP
60c4eb7c7a Merge pull request #103 from CMB/getopt
Use getopt_long instead of getopt, for musl.
2015-06-22 08:09:19 +02:00
Juan RP
22f982df77 xbps-uchroot: fix warning with old clang (hi travis). 2015-06-22 08:02:57 +02:00
Christopher Brannon
b1e6efeebe Use getopt_long instead of getopt, for musl. 2015-06-21 07:06:18 -07:00
Juan RP
5ebd4a6dfb xbps-uchroot: handle SIG{INT,TERM,QUIT} signals to cleanup temp masterdir. 2015-06-11 11:21:35 +02:00
Juan RP
d86cece411 xbps-rindex(1): add support to sign specific pkgs, not the whole repo.
See NEWS for more information.
2015-06-04 16:01:43 +02:00
Juan RP
6df2ff69fe xbps-fbulk: add -h for usage(). 2015-06-04 10:02:16 +02:00
Juan RP
07e8330936 xbps-install(1): added -U --unpack-only to only unpack pkgs, skips configuration. 2015-06-03 11:15:11 +02:00
Juan RP
b2dd18faba configure: added --enable-fulldebug to enable extra/expensive debug code.
This is mostly to avoid the allocation required by the externalization of the
transaction dictionary, which in some cases is huge.

This should reduce the massive memory usage required to inspect the externalized
dictionary.
2015-05-28 11:02:40 +02:00
Juan RP
769a997afb Introduce xbps_plist_{array,dictionary}_from_file().
Those are a wrapper around xbps_{array,dictionary}_internalize_from_zfile()
that prints a debugging msg when the plist file cannot be internalized.

Update xbps to use these wrappers.
2015-05-28 10:15:05 +02:00
Juan RP
c4ed1b5845 xbps-pkgdb: if pkg metafile cannot be internalized print a proper errmsg. 2015-05-28 09:44:01 +02:00
Juan RP
42831b97d4 xbps-pkgdb: add two assertions. 2015-05-28 09:41:00 +02:00
Juan RP
c4184e64b0 xbps-fbulk: needs fcntl.h too. 2015-05-28 09:20:15 +02:00
Juan RP
18d4ee73ac xbps-fbulk: wait3() is declared via _{GNU,BSD}_SOURCE with musl. 2015-05-28 09:18:32 +02:00
Juan RP
0027e54532 xbps-pkgdb.1: fix a mandoc -Wall warning. 2015-05-28 09:13:12 +02:00
Juan RP
b459e4542f xbps-rindex: eliminate locking and update repo index immutable dicts. 2015-05-22 12:20:49 +02:00
Juan RP
fcdd71aac4 Move xbps utils manpages to the section 1 (user commands). 2015-05-16 09:46:10 +02:00
Juan RP
ff8569274f Merge pull request #96 from GiedriusS/master
xbps-checkvars: add missing assertions after memory allocations
2015-05-11 09:54:21 +02:00
Giedrius Statkevičius
fe3cb72a5b xbps-checkvars: add missing assertions after memory allocations 2015-05-10 21:17:39 +03:00
Juan RP
2c0e27a001 xbps-install: print required size and free size on ENOSPC. 2015-05-09 07:02:21 +02:00
Juan RP
2baf1ae101 xbps-uunshare: replace -D/-H/-S with -b src/dest and switch to getopt(3). 2015-05-06 11:40:19 +02:00
Juan RP
4a97810c0b xbps-uchroot: assert that strdup() does not fail. 2015-05-06 11:38:06 +02:00
Juan RP
7d6d1805f3 xbps-uchroot: replace -D/-H/-S with -b src/dest and switch to getopt(3). 2015-05-06 11:24:47 +02:00
Juan RP
9f08ec5123 xbps-fbulk: added support to just building pkgs specified as arguments.
xbps-fbulk [options] void-packages [pkg pkgN]
2015-05-04 18:12:52 +02:00
Juan RP
6a087f5a1f xbps-uchroot.8: document -t and detail -o. 2015-04-27 17:50:46 +02:00
Juan RP
93c85e8038 xbps-fbulk: simplify recollection of dependencies.
The changes I made to xbps-src show-build-deps now will print only
real source package names, without version components or virtual packages,
so that fbulk does not do any extra work.
2015-04-26 10:05:56 +02:00
Juan RP
149f48fb8e xbps-uchroot: added -t option to mount a tmpfs for overlayfs. 2015-04-23 15:05:29 +02:00
Juan RP
46e6a00482 xbps-fbulk: check for xcode==2 to add it to "skipped". 2015-04-23 10:37:32 +02:00
Juan RP
31bf6c5309 xbps-uchroot: added -o <opts> to pass options to the temporary tmpfs mount. 2015-04-20 20:44:42 +02:00
Juan RP
7ea5a53cbd xbps-fbulk: deps/foo just append the dependency pkgname. 2015-04-20 18:44:06 +02:00
Juan RP
4b608365e0 xbps-fbulk: split results into 4 categories: good, bad, skipped, deps.
- good (built successfully)
- bad (build failed)
- skipped (build skipped due to broken/only_for_archs)
- deps (build skipped due to dependencies)
2015-04-20 17:47:10 +02:00
Juan RP
e60ab98e2c xbps-fbulk: added -a <cross-target> support. 2015-04-19 11:49:29 +02:00
Juan RP
d50a6866bc xbps-uchroot: with -O, don't make tmpfs a private mount.
This seems to avoid the weird build issues with xbps-fbulk.
2015-04-16 19:07:40 +02:00
Juan RP
18e743daed xbps-fbulk: declare usage() with __attribute__((noreturn)) to fix clang. 2015-04-16 10:40:26 +02:00
Juan RP
9199867df1 New utility: xbps-fbulk - a fast bulk builder for xbps.
This is a modified version of DragonFlyBSD's fastbulk utility, that
has been adapted for xbps/xbps-src and contains multiple improvements
like configurable logging path, skipping building non working packages
(broken/only_for_archs), etc.

A manual page will be pushed soon.

This is still WIP, it needs more changes to support building a customizable
set of packages and other additions.
2015-04-16 10:28:01 +02:00
Juan RP
bc97851fdb xbps-query(8): do not truncate output if stdout is not a tty. 2015-04-15 18:40:34 +02:00
Juan RP
19fc88198a xbps-uunshare.8: sync with reality. 2015-04-13 16:11:54 +02:00
Juan RP
f78c2986d4 xbps-uchroot: try to bind mount /proc if a new instance fails.
This should help uchroot to work in the travis-ci containers (hopefully).
2015-04-11 08:47:40 +02:00
Juan RP
3ef9350787 xbps-rindex/clean: simplify. 2015-04-09 12:14:03 +02:00
Juan RP
ea0f1731e3 xbps-uchroot: added -O to use overlayfs on tmpfs in a tempdir. 2015-03-26 03:15:17 +01:00
Juan RP
9a16283575 Introduce xbps_repo_{un,}lock() to serialize write access to repodata.
We use a simple file lock that is created with O_CREAT|O_EXCL.
This should fix the concurrency issues with multiple processes
running xbps-rindex -a/-c on the same repository/arch combo.
2015-03-25 12:00:59 +01:00
Juan RP
62b21a4f93 xbps-install/question.c: char is not enough for fgetc, use int (HI GOTTOX) 2015-03-21 09:45:29 +01:00
Enno Boland
1eeaa99438 utils: test for EOF on error, not for \0. 2015-03-14 00:41:39 +01:00
Enno Boland
507a9e338f utils: small code cleanup. 2015-03-14 00:38:33 +01:00
Juan RP
52dae50075 xbps-uunshare: replace clone/exec with unshare/exec cmd.
There's no reason to clone and run cmd in the child, replace the
execution environment with cmd directly to avoid the child process.
2015-03-13 21:14:28 +01:00
Juan RP
519ea4001c xbps-uunshare: fix typo in an error msg (thanks uggedal). 2015-03-12 19:05:05 +01:00
Juan RP
301b6d220e xbps-uunshare: fix previous (15977278). 2015-03-09 12:45:32 +01:00
Juan RP
1597727814 xbps-uunshare: do not fail if /proc/self/setgroups does not exist.
3.16 supports user_namespaces(7) but does not have /proc/self/setgroups.

Found by @cheneukirchen.
2015-03-09 12:34:57 +01:00
Juan RP
25f7228920 xbps-reconfigure: add -i/--ignore to usage; thanks @chneukirchen. 2015-03-08 10:22:15 +01:00
Juan RP
acb00d52e4 xbps-checkvers(8): fix manually added packages as arguments.
Regression introduced in the 0.44 changes.
2015-03-07 09:11:12 +01:00
Juan RP
77e83d4b17 xbps-uunshare: for compat with uchroot, use the uid/gid of the calling process.
... rather than setting this up for uid/gid 0.
2015-03-06 07:39:31 +01:00
Juan RP
3da2c3fdda xbps-uunshare: silence a clang warning. 2015-03-05 19:24:33 +01:00
Juan RP
26944cf6be xbps-uunshare: chdir to the correct dir for bind mounts. 2015-03-05 19:06:39 +01:00
Juan RP
a1d1b3e480 bin/Makefile: restrict xbps-uunshare(8) only on linux. 2015-03-05 18:46:01 +01:00
Juan RP
58e6d71d24 New utility: xbps-uunshare(8) - like xbps-uchroot(8) with user_namespaces(7). 2015-03-05 18:44:20 +01:00
Juan RP
927254c43e xbps-rindex(8): fix -s short option (omitted in shortopts). 2015-03-03 16:10:03 +01:00
Juan RP
4922c808f4 Implemented feature #77 (Add package repository locked mode)
Close #77
2015-03-03 12:11:28 +01:00
Juan RP
db21c045d2 xbps-create(8): use fdatasync() rather than fsync().
The latter could be too expensive, and we only care for the data to be written
to the binary package because a bit later we rename() the temporary file,
which will ensure a data flush to disk.
2015-02-27 11:04:25 +01:00
Juan RP
04da57e4f9 xbps-pkgdb: when checking pkg files, ignore mtime with mutable files. 2015-02-27 10:38:50 +01:00
Juan RP
c712c99ced xbps-pkgdb: exit with error if any test fails. 2015-02-26 12:01:20 +01:00
Juan RP
725ef2472d xbps-uhelper: sync error messages with reality. 2015-02-23 16:56:47 +01:00
Juan RP
b909e8edc3 xbps-pkgdb: fix use-after-free introduced in 3855d2e. 2015-02-23 08:26:20 +01:00
Juan RP
3855d2e2fb xbps-pkgdb(8): check pkg file mtime (iff the obj is available). 2015-02-22 18:45:47 +01:00
Juan RP
2cae0cba01 xbps-create(8): store file mtime in metadata for upcoming changes. 2015-02-22 18:20:32 +01:00
Juan RP
3692ecb537 xbps-query/search: fix previous. 2015-02-20 11:07:35 +01:00
Juan RP
341e8a10ae xbps-query/search: minor optimizations. 2015-02-20 11:01:18 +01:00