Commit Graph

112 Commits

Author SHA1 Message Date
862065b3b2 Add log reading to the journald log driver
If a logdriver doesn't register a callback function to validate log
options, it won't be usable.  Fix the journald driver by adding a dummy
validator.

Teach the client and the daemon's "logs" logic that the server can also
supply "logs" data via the "journald" driver.  Update documentation and
tests that depend on error messages.

Add support for reading log data from the systemd journal to the
journald log driver.  The internal logic uses a goroutine to scan the
journal for matching entries after any specified cutoff time, formats
the messages from those entries as JSONLog messages, and stuffs the
results down a pipe whose reading end we hand back to the caller.

If we are missing any of the 'linux', 'cgo', or 'journald' build tags,
however, we don't implement a reader, so the 'logs' endpoint will still
return an error.

Make the necessary changes to the build setup to ensure that support for
reading container logs from the systemd journal is built.

Rename the Jmap member of the journald logdriver's struct to "vars" to
make it non-public, and to make it easier to tell that it's just there
to hold additional variable values that we want journald to record along
with log data that we're sending to it.

In the client, don't assume that we know which logdrivers the server
implements, and remove the check that looks at the server.  It's
redundant because the server already knows, and the check also makes
using older clients with newer servers (which may have new logdrivers in
them) unnecessarily hard.

When we try to "logs" and have to report that the container's logdriver
doesn't support reading, send the error message through the
might-be-a-multiplexer so that clients which are expecting multiplexed
data will be able to properly display the error, instead of tripping
over the data and printing a less helpful "Unrecognized input header"
error.

Signed-off-by: Nalin Dahyabhai <nalin@redhat.com> (github: nalind)
Upstream-commit: e611a189cb3147cd79ccabfe8ba61ae3e3e28459
Component: engine
2015-09-11 16:50:03 -04:00
48de342ac9 Remove -lpthread and -ldl from ldflags
There is no need in those flags now when we use amalgamated sqlite3 from
mattn/go-sqlite3.

Signed-off-by: Alexander Morozov <lk4d4@docker.com>
Upstream-commit: 8845eb434596ea709a7ef066d191141331dd1098
Component: engine
2015-09-08 17:01:14 -07:00
d9ff9abe1f update sqlite3 vendor with fix for static builds
Signed-off-by: Jessica Frazelle <acidburn@docker.com>
Upstream-commit: 46df9e4ec3453dd6f46261e0eeb276965af20880
Component: engine
2015-09-07 18:50:56 -07:00
71729da61a make binary: do not ignore unresolved symbols
TL;DR: stop building static binary that may fail

Linker flag --unresolved-symbols=ignore-in-shared-libs was added
in commit 06d0843 two years ago for the static build case, presumably
to avoid dealing with problem of missing libraries.

For the record, this is what ld(1) man page says:

> --unresolved-symbols=method
>    Determine how to handle unresolved symbols.  There are four
>    possible values for method:
> .........
>    ignore-in-shared-libs
>        Report unresolved symbols that come from regular object files,
>        but ignore them if they come from shared libraries.  This can
>        be useful when creating a dynamic binary and it is known that
>        all the shared libraries that it should be referencing are
>        included on the linker's command line.

Here, the flag is not used for its purpose ("creating a dynamic binary")
and does more harm than good. Instead of complaining about missing symbols
as it should do if some libraries are missing from LIBS/LDFLAGS, it lets
ld create a binary with unresolved symbols, ike this:

 $ readelf -s bundles/1.7.1/binary/docker-1.7.1 | grep -w UND
 ........
 21029: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND dlopen
 .........

Such binary is working just fine -- until code calls one of those
functions, then it crashes (for apparently no reason, i.e. it is
impossible to tell why from the diagnistics printed).

In other words, adding this flag allows to build a static binary
with missing libraries, hiding the problem from both a developer
(who forgot to add a library to #cgo: LDFLAGS -- I was one such
developer a few days ago when I was working on ploop graphdriver)
and from a user (who expects the binary to work without crashing,
and it does that until the code calls a function in one of those
libraries).

Removing the flag immediately unveils the problem (as it should):

	/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libsqlite3.a(sqlite3.o):
	In function `unixDlError':
	(.text+0x20971): undefined reference to `dlerror'
	/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libsqlite3.a(sqlite3.o):
	In function `unixDlClose':
	(.text+0x8814): undefined reference to `dlclose'

The problem is, gosqlite package says:

	#cgo LDFLAGS: -lsqlite3

which is enough for dynamic linking, as indirect dependencies (i.e.
libraries required by libsqlite3.so) are listed in .so file and will be
resolved dynamically by ldd upon executing the binary.

For static linking though, one has to list all the required libraries,
both direct and indirect. For libraries with pkgconfig support the
list of required libraries can be obtained with pkg-config:

	$ pkg-config --libs sqlite3 # dynamic linking case
	-lsqlite3
	$ pkg-config --libs --static sqlite3 # static case
	-lsqlite3 -ldl -lpthread

It seems that all one has to do is to fix gosqlite this way:

	-#cgo LDFLAGS: -lsqlite3
	+#cgo pkg-config: sqlite3

Unfortunately, cmd/go doesn't know that it needs to pass --static
flag to pkg-config in case of static linking
(see https://github.com/golang/go/issues/12058).

So, for one, one has to do one of these things:

1. Patch sqlite.go like this:

	-#cgo LDFLAGS: -lsqlite3
	+#cgo pkg-config: --static sqlite3

(this is exactly what I do in goploop, see
https://github.com/kolyshkin/goploop/commit/e9aa072f51)

2. Patch sqlite.go like this:
	-#cgo LDFLAGS: -lsqlite3
	+#cgo LDFLAGS: -lsqlite3 -ldl -lpthread

(I would submit this patch to gosqlite but it seems that
https://code.google.com/p/gosqlite/ is deserted and not maintained,
and patching it here is not right as it is "vendored")

3. Explicitly add -ldl for the static link case.
This is what this patch does.

4. Fork sqlite to github and maintain it there. Personally I am not
ready for that, as I'm neither a Go expert nor gosqlite user.

Now, #3 doesn't look like a clear solution, but nevertheless it makes
the build much better than it was before.

Signed-off-by: Kir Kolyshkin <kir@openvz.org>
Upstream-commit: 15aad5d3e6d97627345586e5ee92a896667bb33a
Component: engine
2015-09-04 13:15:25 -07:00
9416fd6ce9 Windows: Workaround for CI
Signed-off-by: John Howard <jhoward@microsoft.com>
Upstream-commit: ac120567e8015a6a98f0aa7ac71f3ce2d5f36031
Component: engine
2015-08-05 11:20:30 -07:00
c56f8c4097 Enable validate-lint as part of CI
Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>
Upstream-commit: bc8b8e03b48bf1ef6ce6b67271948e4a20c2ed31
Component: engine
2015-07-22 15:23:34 -07:00
14e7c996e2 Increase timeout to run tests on slow platforms
Signed-off-by: Srini Brahmaroutu <srbrahma@us.ibm.com>
Upstream-commit: b98edced9e16e73b84a1a7fc670d4c3f6d57f3e8
Component: engine
2015-07-13 21:13:17 +00:00
888e384d70 Add branch and build time to version
Signed-off-by: John Howard <jhoward@microsoft.com>
Upstream-commit: 87eae0d659d6e4bb75942455f3f73a74f54ed3b9
Component: engine
2015-06-22 13:00:27 -07:00
6fba235ed8 Add new "validate-pkg" bundlescript
This helps ensure that `github.com/docker/docker/pkg/...` is actually safe to use in isolation (ie, doesn't import anything from `github.com/docker/docker` except other things from `pkg` or vendored dependencies).

Adding `github.com/docker/docker/utils` to the imports of `pkg/version/version.go`:

```
---> Making bundle: validate-pkg (in bundles/1.7.0-dev/validate-pkg)
These files import internal code: (either directly or indirectly)
 - pkg/version/version.go imports github.com/docker/docker/autogen/dockerversion
 - pkg/version/version.go imports github.com/docker/docker/utils
```

And then removing it again:

```
---> Making bundle: validate-pkg (in bundles/1.7.0-dev/validate-pkg)
Congratulations! "./pkg/..." is safely isolated from internal code.
```

Signed-off-by: Andrew "Tianon" Page <admwiggin@gmail.com>
Upstream-commit: 9465272c281c602c758e51ed99f344c0686a899a
Component: engine
2015-06-12 12:28:23 -07:00
2345f52566 Merge pull request #12992 from aidanhs/aphs-easy-debug-build
Allow passing DOCKER_DEBUG= to `make`
Upstream-commit: 75f63499a05ecd6511b468b666973ed9d38037ae
Component: engine
2015-06-08 15:15:49 -07:00
c1e042a6e9 Merge pull request #13568 from jfrazelle/fix-release-script-for-experimental
fix release script for experimental
Upstream-commit: d37aad170ffe75eeaaea07d52863a6159417e5d6
Component: engine
2015-06-01 12:29:45 -04:00
21758fe067 Restore DEBUG as DOCKER_DEBUG (removed in #10665), add as make variable
Signed-off-by: Aidan Hobson Sayers <aidanhs@cantab.net>
Upstream-commit: a121ac858e9b08aff0c6709337e5150b01851ffd
Component: engine
2015-05-30 19:37:36 +01:00
c50b83a729 Make "DEST" a make.sh construct instead of ad-hoc
Using "DEST" for our build artifacts inside individual bundlescripts was already well-established convention, but this officializes it by having `make.sh` itself set the variable and create the directory, also handling CYGWIN oddities in a single central place (instead of letting them spread outward from `hack/make/binary` like was definitely on their roadmap, whether they knew it or not; sneaky oddities).

Signed-off-by: Andrew "Tianon" Page <admwiggin@gmail.com>
Upstream-commit: ac3388367b6493987cef8017774fa4cdb5d2098f
Component: engine
2015-05-30 11:16:43 -07:00
a4e456d439 fix experimental version and release script
add api version experimental

Signed-off-by: Jessica Frazelle <princess@docker.com>
Upstream-commit: b372f9f224d2dcc2a7beca55751782060dc9b12f
Component: engine
2015-05-29 10:00:22 -07:00
da2cc90fcd Merge pull request #13416 from Microsoft/10662-fixintegrationtests
Windows: Pass temp environment through
Upstream-commit: 37cc42ee0e742a14047f32ef27c9b8b2371e1fb8
Component: engine
2015-05-28 11:22:37 -07:00
af2789e761 script cleaned up
Signed-off-by: Alexey Guskov <lexag@mail.ru>
Upstream-commit: f228fb09acffde575c704d501739ad547baf4e24
Component: engine
2015-05-27 10:21:09 +03:00
d913f69b1f Make hack/make.sh work on FreeBSD
Signed-off-by: Alexey Guskov <lexag@mail.ru>
Upstream-commit: 9e00e34092ca1f2f2e7919430f5756f94e484cdb
Component: engine
2015-05-26 15:59:36 +03:00
9cf93fa55c Windows: Pass temp environment through
Signed-off-by: John Howard <jhoward@microsoft.com>
Upstream-commit: fba44a7ccf6eb9ba588b9d1df6a3a22fd5c5dc18
Component: engine
2015-05-22 15:14:22 -07:00
b53e996e55 Add suffix to experimental builds version
Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>
Upstream-commit: 78578125ce6c534253d8d60c242d6993c569449e
Component: engine
2015-05-21 16:27:42 -07:00
045dd55a7d Add DOCKER_EXPERIMENTAL environment variable
The DOCKER_EXPERIMENTAL environment variable drives the activation of
the 'experimental' build tag.

Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>
Upstream-commit: ca6722f1c5e4e2017a71e33579d91ac0d9ea2a25
Component: engine
2015-05-20 12:21:17 -07:00
2ee6387cbc Merge pull request #12165 from icecrime/optional_userland_proxy
Optional userland proxy
Upstream-commit: 74bfa3675353aaf10ca760e82a79d758bea0ff6b
Component: engine
2015-05-07 14:01:16 -07:00
afd229a538 Add DOCKER_USERLANDPROXY test variable
Add an convenient way to switch --userland-proxy on and off in
integration tests.

Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>
Upstream-commit: 44de5fecce9dd194fade1b696e9297ac5c985754
Component: engine
2015-05-04 16:07:51 -07:00
11e5be135f Merge pull request #12190 from rhvgoyal/deferred-removal
Devicemapper: Provide deferred device removal capability
Upstream-commit: 56c991781564e8cc292166d3b3e27e304c240468
Component: engine
2015-05-04 14:22:52 -07:00
6b9dd0750f Merge pull request #12901 from hqhq/hq_fix_test_comment
fix comments for test certain tests
Upstream-commit: 7e7b6a20bd4ea60954b9d17823bf4af00f27977e
Component: engine
2015-04-30 17:08:23 -07:00
d592b96e50 fix comments for test certain tests
Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Upstream-commit: 987e221607866ae391b632f9de1fd413e5a73150
Component: engine
2015-04-30 15:40:48 +08:00
0ec0dcde9e Remove integration tests and port them to integration-cli
Signed-off-by: Antonio Murdaca <me@runcom.ninja>
Upstream-commit: f7e417ea5e26f11ec43dba64ee153765d2276f40
Component: engine
2015-04-30 01:35:16 +02:00
2c94df895a Validate we're not using the old testing stuff
Signed-off-by: Doug Davis <dug@us.ibm.com>
Upstream-commit: ecccfa82aa22829c52778c4457cacd8d766e3dda
Component: engine
2015-04-23 10:29:47 -07:00
d1b60e7633 make.sh: Define a new build tag libdm_no_deferred_remove
libdm started offering deferred remove functionality from version
1.02.89. As docker still builds against older libdm, define a tag
libdm_no_deferred_remove to determine whether we are compiling
against new libdm or older one and enable/disable deferred remove
functionality accordingly.

Signed-off-by: Vincent Batts <vbatts@redhat.com>
Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Upstream-commit: b3e29926cef104c9ef99ff05ed1490cf821bb7b0
Component: engine
2015-04-21 18:14:59 -04:00
64b904ff2d hack/make/test-integration-cli: introduce MAKEDIR variable
- every execution of dirname costs time
- less repeating

Signed-off-by: Jörg Thalheim <joerg@higgsboson.tk>
Upstream-commit: 6533cb973f6bab672018148fd6a67644580cc61f
Component: engine
2015-04-15 10:44:14 +02:00
438e1a9b5d hack: useless use of cat
Signed-off-by: Jörg Thalheim <joerg@higgsboson.tk>
Upstream-commit: 4d53a1952865a3610cf2007f7075b360c5aafbef
Component: engine
2015-04-15 10:14:14 +02:00
29eeea7d5f hack: quote all parameters with variable interpolation
better safe then sorry. especially for rm

Signed-off-by: Jörg Thalheim <joerg@higgsboson.tk>
Upstream-commit: ac20568b0a62c794c0f1190703f051bd1cfac341
Component: engine
2015-04-15 10:14:14 +02:00
3dbe29194a hack/make.sh: use SCRIPTDIR wherever possible
Signed-off-by: Jörg Thalheim <joerg@higgsboson.tk>
Upstream-commit: 23afce5f7fb575ea5fad1afc5f60b38e3e17d8b3
Component: engine
2015-04-15 10:14:14 +02:00
a5ef04a0fe hack/make.sh: use bash internal $PWD
Signed-off-by: Jörg Thalheim <joerg@higgsboson.tk>
Upstream-commit: 6f812a4ec18453dd0f46e138f7c05b1ade13f007
Component: engine
2015-04-15 10:14:14 +02:00
ddcc756587 Adds validate-vet script
resolves #11970

Signed-off-by: bobby abbott <ttobbaybbob@gmail.com>
Upstream-commit: 3280ce651b13866f93440b60a9182f9a4f9f14b9
Component: engine
2015-04-13 12:48:05 -07:00
97f1b60257 Merge pull request #12301 from ewindisch/https_links
Use HTTPS links for URLs in READMEs / comments / docs
Upstream-commit: 3509132a6e28caa18003298521c58746f490b57b
Component: engine
2015-04-13 14:30:53 -04:00
aba71456ee Merge pull request #12049 from tianon/bundles-latest
Add "bundles/latest" symlink
Upstream-commit: 85f1410a5a46988df0ff0c88d418a4ec0de37064
Component: engine
2015-04-13 11:11:38 -07:00
cf01843925 Add "bundles/latest" symlink
This is a symlink to the latest "bundle" that was assembled.  For example, if `VERSION` is currently `1.5.0-dev`, then `bundles/latest` will be a symlink to `bundles/1.5.0-dev` after an attempted build.

One interesting property of this is that after a successful `binary` build, we can `./bundles/latest/binary/docker -v` and get back something like `Docker version 1.5.0-dev, build 3ff6723-dirty`.

Signed-off-by: Andrew "Tianon" Page <admwiggin@gmail.com>
Upstream-commit: d42753485b71f5f26b682a187d1963ef138cd0ab
Component: engine
2015-04-13 10:54:17 -06:00
428585dc12 HTTPS urls for ./hacking
Signed-off-by: Eric Windisch <eric@windisch.us>
Upstream-commit: 723d43387a5c04ef8588c7e1557aa163e268581c
Component: engine
2015-04-11 13:22:16 -04:00
3274cd15bf Change the btrfs_noversion check to be automatic
Signed-off-by: Andrew "Tianon" Page <admwiggin@gmail.com>
Upstream-commit: 3761955e8c1e7534026c469186c3f66c18e77cbc
Component: engine
2015-04-03 01:30:12 -06:00
abd71318ca Revert "Dealing with trailing whitespaces"
The validation script from #10681 is too pedantic, and does not handle
well situations like:

```
cat <<EOF   # or <<-EOF
	Whether the leading whitespace is stripped out or not by bash
	it should still be considered as valid.
EOF
```

This reverts commit 4e65c1c319afffc325853b88c9aef0c42ec83482.

Signed-off-by: Tibor Vass <tibor@docker.com>
Upstream-commit: 0252ad0adc37a34b88fa908ae74a13b940febdcb
Component: engine
2015-03-25 10:04:56 -06:00
d00e59a1a0 Merge pull request #10681 from noironetworks/whitespaces-cleaner
Removed all trailing whitespaces from every text file
Upstream-commit: 322095ed63ec0943378485f8f8d4cabcfd471875
Component: engine
2015-03-24 16:02:14 -07:00
f24a24db53 make.sh: leave around the generated version
For positerity (largely of packagers) lets leave around the generated
version files that happen during build.
They're already ignored in git, and recreated on every build.

Signed-off-by: Vincent Batts <vbatts@redhat.com>
Upstream-commit: 3a939d99870eaad34aea2010b64147a1e60bb3c5
Component: engine
2015-03-23 14:46:44 -04:00
a64392e089 Dealing with trailing whitespaces
Created a validation that detects all trailing whitespaces from every
text file that isn't *.go, *.md, vendor/*,
docs/theme/mkdocs/tipuesearch*

Removed trailing whitespaces from every text file except from vendor/*
builder/parser/testfiles*, docs/theme/mkdocs/tipuesearch* and *.md

Signed-off-by: André Martins <martins@noironetworks.com>
Upstream-commit: 4e65c1c319afffc325853b88c9aef0c42ec83482
Component: engine
2015-03-17 03:34:01 +00:00
719f00fbf2 Move scripts back to hack/, leave docs in project/
This also removes the now-defunct `*maintainer*.sh` scripts that don't work with the new TOML format, and moves a couple not-build-or-release-related scripts to `contrib/` instead.

Signed-off-by: Andrew "Tianon" Page <admwiggin@gmail.com>
Upstream-commit: 949a21b55f3b8d7d1ae7a7b9829111a8f0dbf7e2
Component: engine
2015-03-13 14:04:08 -06:00
e8e8b5b2cb Move 'hack' to the less confusing 'project'
We might want to break it up into smaller pieces (eg. tools in one
place, documents in another) but let's worry about that later.

Signed-off-by: Solomon Hykes <solomon@docker.com>
Upstream-commit: 32e61b8f5c3f855f5e204064be1aea6a877dda43
Component: engine
2014-11-09 21:50:28 +00:00
712adb4068 Revert "use code generation for GITCOMMIT/VERSION too"
This reverts commit 85744a35de0e30c2dd6741b833f38ff218c8a3fc.

Conflicts:
	.gitignore
	hack/make.sh

Docker-DCO-1.1-Signed-off-by: Jessica Frazelle <jess@docker.com> (github: jfrazelle)
Upstream-commit: ec1420cc2b228116d4aa9c812bd98fa8acdc1b98
Component: engine
2014-10-28 16:27:23 -07:00
7c82a1653d Revert "Use code generation to set IAMSTATIC instead of -X"
This reverts commit 3e10b93106dea94e5747ab32fe4ac765aa22f9bc.

Conflicts:
	.gitignore
	hack/make.sh
	hack/make/dynbinary

Docker-DCO-1.1-Signed-off-by: Jessica Frazelle <jess@docker.com> (github: jfrazelle)
Upstream-commit: 17e0a15386c2a2ff01417d66e37683bd9a2a79c8
Component: engine
2014-10-28 16:25:50 -07:00
e41a8afa7b finally, use code generation for INITSHA1 & INITPATH too
Signed-off-by: Michael Hudson-Doyle <michael.hudson@linaro.org>
Upstream-commit: c7c620dd9fce0e7b437ee185c7a58341f3b8e3aa
Component: engine
2014-10-24 11:01:19 +13:00
c15381784d use code generation for GITCOMMIT/VERSION too
Signed-off-by: Michael Hudson-Doyle <michael.hudson@linaro.org>
Upstream-commit: 85744a35de0e30c2dd6741b833f38ff218c8a3fc
Component: engine
2014-10-24 10:58:39 +13:00
4602c3289a Use code generation to set IAMSTATIC instead of -X
Signed-off-by: Michael Hudson-Doyle <michael.hudson@linaro.org>
Upstream-commit: 3e10b93106dea94e5747ab32fe4ac765aa22f9bc
Component: engine
2014-10-24 10:56:51 +13:00