Skip to content

Commit

Permalink
gometalinter: add per-platform configurable options
Browse files Browse the repository at this point in the history
I have run into two separate issues while doing 'make all' on armhf
(a Scaleway C1 machine, same as used in CI). This commit fixes both.

1. There were a lot of "not enough memory" errors, and after that
in a few runs gometalinter just stuck forever on FUTEX_WAIT with
no children left.

Looking into docs, I found the --enable-gc option which solved the issue.

[Update: this has already been added]

2. Timeout of 2 minutes is not enough for the abovementioned platform.
The longest running linter is goimports which takes almost 6 minutes to run.

Set the timeout to the observable run time roughly doubled.

In addition, ARM platforms does not have too much RAM (2GB), so
running too many processes in parallel might be problematic. Limit
it by using -j2

[v2: make the timeout arch-dependent, also tested on aarch64 (2m15s)]
[v3: moved timeout setting to Dockerfiles]
[v4: generalized to GOMETALINTER_OPTS, added -j2 for ARM platforms]
[v5: rebase to master]

Signed-off-by: Kir Kolyshkin <[email protected]>
  • Loading branch information
kolyshkin committed Sep 13, 2017
1 parent 21b2c27 commit b96093f
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 2 deletions.
3 changes: 3 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -216,3 +216,6 @@ ENTRYPOINT ["hack/dind"]

# Upload docker source
COPY . /go/src/github.com/docker/docker

# Options for hack/validate/gometalinter
ENV GOMETALINTER_OPTS="--deadline 2m"
3 changes: 3 additions & 0 deletions Dockerfile.aarch64
Original file line number Diff line number Diff line change
Expand Up @@ -181,3 +181,6 @@ ENTRYPOINT ["hack/dind"]

# Upload docker source
COPY . /go/src/github.com/docker/docker

# Options for hack/validate/gometalinter
ENV GOMETALINTER_OPTS="--deadline 4m -j2"
3 changes: 3 additions & 0 deletions Dockerfile.armhf
Original file line number Diff line number Diff line change
Expand Up @@ -169,3 +169,6 @@ ENTRYPOINT ["hack/dind"]

# Upload docker source
COPY . /go/src/github.com/docker/docker

# Options for hack/validate/gometalinter
ENV GOMETALINTER_OPTS="--deadline 10m -j2"
7 changes: 6 additions & 1 deletion hack/validate/gometalinter
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,9 @@ set -e -o pipefail

SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

gometalinter --config $SCRIPTDIR/gometalinter.json ./...
# CI platforms differ, so per-platform GOMETALINTER_OPTS can be set
# from a platform-specific Dockerfile, otherwise let's just set
# (somewhat pessimistic) default of 10 minutes.
gometalinter \
${GOMETALINTER_OPTS:--deadine 10m} \
--config $SCRIPTDIR/gometalinter.json ./...
1 change: 0 additions & 1 deletion hack/validate/gometalinter.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
{
"Vendor": true,
"Deadline": "2m",
"EnableGC": true,
"Sort": ["linter", "severity", "path"],
"Exclude": [
Expand Down

0 comments on commit b96093f

Please sign in to comment.