initial commit
This commit is contained in:
commit
a599451c4f
19
.hadolint.yaml
Normal file
19
.hadolint.yaml
Normal file
@ -0,0 +1,19 @@
|
||||
failure-threshold: warning
|
||||
|
||||
ignored:
|
||||
# updated nightly so this is irrelevant
|
||||
- DL3039
|
||||
# DL3041 warning: Specify version with `dnf install -y <package>-<version>`.
|
||||
- DL3041
|
||||
# DL3040 warning: `dnf clean all` missing after dnf command.
|
||||
- DL3040
|
||||
# SC2039 warning: In POSIX sh, brace expansion is undefined.
|
||||
# it actually still works
|
||||
- SC2039
|
||||
|
||||
no-fail: true
|
||||
|
||||
override:
|
||||
info:
|
||||
# SC3009 warning: In POSIX sh, brace expansion is undefined.
|
||||
- SC3009
|
7
.pre-commit-config.yaml
Normal file
7
.pre-commit-config.yaml
Normal file
@ -0,0 +1,7 @@
|
||||
---
|
||||
fail_fast: false
|
||||
repos:
|
||||
- repo: https://github.com/hadolint/hadolint
|
||||
rev: v2.8.0
|
||||
hooks:
|
||||
- id: hadolint
|
74
Dockerfile
Normal file
74
Dockerfile
Normal file
@ -0,0 +1,74 @@
|
||||
# syntax=docker/dockerfile:1.3
|
||||
FROM registry.fedoraproject.org/fedora:35
|
||||
|
||||
ARG BUILD_DATE
|
||||
ARG VCS_REF
|
||||
|
||||
LABEL description="Container image for distributed building of C/C++ programs on Fedora using distcc"
|
||||
|
||||
LABEL org.label-schema.build-date=$BUILD_DATE \
|
||||
org.label-schema.vcs-url="https://git.dotya.ml/wanderer/docker-fedora-distcc.git" \
|
||||
org.label-schema.vcs-ref=$VCS_REF \
|
||||
org.label-schema.license=GPL-3.0
|
||||
|
||||
# hadolint shell=/usr/bin/bash
|
||||
RUN printf "[main]\ngpg_check=1\ninstallonly_limit=2\nclean_requirements_on_remove=True\nfastestmirror=True\nmax_parallel_downloads=7\n" > /etc/dnf/dnf.conf; \
|
||||
cat /etc/dnf/dnf.conf; \
|
||||
dnf install 'dnf-command(config-manager)' -y && \
|
||||
dnf config-manager --set-enabled updates && \
|
||||
dnf config-manager --set-enabled updates-testing && \
|
||||
dnf --refresh upgrade -y
|
||||
# hadolint ignore DL3059
|
||||
RUN dnf install --nodocs dnf dnf-plugins-core -y && \
|
||||
dnf copr enable eddsalkield/iwyu -y && \
|
||||
dnf install --nodocs --setopt install_weak_deps=0 -y \
|
||||
git \
|
||||
ninja-build \
|
||||
make \
|
||||
{c,auto}make \
|
||||
gcc \
|
||||
gcc-c++ \
|
||||
libgcc \
|
||||
libstdc++-{devel,static} \
|
||||
glibc-devel \
|
||||
clang \
|
||||
distcc \
|
||||
distcc-server \
|
||||
iwyu \
|
||||
cryptopp-devel \
|
||||
libasan-static \
|
||||
liblsan-static \
|
||||
libubsan-static \
|
||||
libtsan-static \
|
||||
binutils \
|
||||
lld \
|
||||
flex \
|
||||
bison \
|
||||
which \
|
||||
file \
|
||||
protobuf-c-{devel,compiler} \
|
||||
protobuf-compiler \
|
||||
cppunit \
|
||||
capnproto-{devel,libs} \
|
||||
libpcap-devel \
|
||||
kernel-devel \
|
||||
&& dnf clean all -y
|
||||
|
||||
ENTRYPOINT ["distccd", \
|
||||
"--daemon", \
|
||||
"--no-detach", \
|
||||
"--user", "distcc", \
|
||||
"--port", "3632", \
|
||||
"--stats", \
|
||||
"--stats-port", "3633", \
|
||||
"--log-stderr", \
|
||||
"--listen", "0.0.0.0"\
|
||||
]
|
||||
|
||||
# By default the distcc server will accept clients from everywhere.
|
||||
CMD ["--allow", "0.0.0.0/0", \
|
||||
"--nice", "3", \
|
||||
"--jobs", "6" \
|
||||
]
|
||||
|
||||
|
34
Makefile
Normal file
34
Makefile
Normal file
@ -0,0 +1,34 @@
|
||||
dcmd = docker
|
||||
dfile = Dockerfile
|
||||
dtag = immawanderer/fedora-distcc:testbuild
|
||||
dargs = build -t $(dtag) --no-cache --pull - < $(dfile)
|
||||
cleanargs = image rm -f $(dtag)
|
||||
pruneargs = system prune -af
|
||||
dargskaniko = run --rm -it -w=$(kanikowdir) -v $$PWD:$(kanikowdir)
|
||||
kanikoexecutorimg = gcr.io/kaniko-project/executor:v1.7.0-debug
|
||||
kanikowdir = /src
|
||||
kanikocontext = .
|
||||
kanikoargs = -f=$(dfile) -c=$(kanikocontext) --use-new-run --snapshotMode=redo --build-arg BUILD_DATE=$(build_date) --build-arg VCS_REF=$(vcs_ref) --no-push
|
||||
vcs_ref = $$(git rev-parse --short HEAD)
|
||||
build_date= $$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
||||
hadolintimg = hadolint/hadolint:v2.8.0-alpine
|
||||
hadolintargs = run --rm -i -v $$PWD/.hadolint.yaml:/root/.config/hadolint.yaml
|
||||
|
||||
.PHONY: hadolint build kaniko clean test prune
|
||||
|
||||
hadolint:
|
||||
$(dcmd) $(hadolintargs) $(hadolintimg) < $(dfile)
|
||||
|
||||
kaniko:
|
||||
$(dcmd) $(dargskaniko) $(kanikoexecutorimg) $(kanikoargs)
|
||||
|
||||
build:
|
||||
$(dcmd) $(dargs)
|
||||
|
||||
clean:
|
||||
$(dcmd) $(cleanargs)
|
||||
|
||||
test: hadolint build kaniko
|
||||
|
||||
prune:
|
||||
$(dcmd) $(pruneargs)
|
7
README.md
Normal file
7
README.md
Normal file
@ -0,0 +1,7 @@
|
||||
# docker-fedora-distcc
|
||||
|
||||
This repository provides a Dockerfile to create a container image for distributed building of C/C++ programs on Fedora using distcc.
|
||||
|
||||
The image is rebuilt nightly to ensure it always has the latest packages.
|
||||
|
||||
development happens on [this Gitea instance](https://git.dotya.ml/wanderer/docker-fedora-distcc)
|
11
hooks/build
Normal file
11
hooks/build
Normal file
@ -0,0 +1,11 @@
|
||||
#!/bin/bash
|
||||
|
||||
# as per https://github.com/rossf7/label-schema-automated-build
|
||||
|
||||
# $IMAGE_NAME var is injected into the build so the tag is correct.
|
||||
|
||||
export DOCKER_BUILDKIT=1
|
||||
echo "Build hook running"
|
||||
docker build --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
|
||||
--build-arg VCS_REF=`git rev-parse --short HEAD` \
|
||||
-t $IMAGE_NAME .
|
Loading…
Reference in New Issue
Block a user