Skip to content

Commit 54865d7

Browse files
committed
Add Dockerfile back to libfly
Had moved this to flymake along with the build system, but really it's not needed there.
1 parent 009749c commit 54865d7

File tree

3 files changed

+124
-1
lines changed

3 files changed

+124
-1
lines changed

build/ci/Dockerfile

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
FROM ubuntu:20.10
2+
3+
MAINTAINER Timothy Flynn <[email protected]>
4+
5+
ARG CLANG_VERSION
6+
ARG GCC_VERSION
7+
ARG JDK_VERSION
8+
9+
# Install base tools
10+
RUN apt-get update && \
11+
apt-get install -y \
12+
curl \
13+
lcov \
14+
make \
15+
sudo \
16+
&& \
17+
\
18+
echo "Set disable_coredump false" >> /etc/sudo.conf
19+
20+
# Install gcc
21+
RUN apt-get install -y \
22+
gcc-$GCC_VERSION \
23+
gcc-$GCC_VERSION-multilib \
24+
g++-$GCC_VERSION \
25+
g++-$GCC_VERSION-multilib \
26+
&& \
27+
\
28+
for tool in gcc g++ gcov; \
29+
do \
30+
update-alternatives --install \
31+
/usr/bin/$tool $tool /usr/bin/$tool-$GCC_VERSION 1; \
32+
done
33+
34+
# Install clang
35+
RUN apt-get install -y \
36+
clang-$CLANG_VERSION \
37+
lld-$CLANG_VERSION \
38+
llvm-$CLANG_VERSION \
39+
&& \
40+
\
41+
for tool in clang clang++ lld llvm-ar llvm-cov llvm-profdata llvm-strip; \
42+
do \
43+
update-alternatives --install \
44+
/usr/bin/$tool $tool /usr/bin/$tool-$CLANG_VERSION 1; \
45+
done
46+
47+
# Install OpenJDK
48+
RUN if test ! -z "$JDK_VERSION" ; then \
49+
DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-$JDK_VERSION-jdk; \
50+
fi
51+
52+
# Cleanup
53+
RUN apt-get clean -y && \
54+
apt-get autoremove -y && \
55+
apt-get purge -y && \
56+
rm -rf /tmp/* /var/tmp/* /var/cache/* /var/lib/apt/lists/*

build/ci/Makefile

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Build, push, or run a libfly CI container.
2+
3+
.PHONY: help
4+
.PHONY: build
5+
.PHONY: push
6+
.PHONY: run
7+
8+
# Set the path to the build system.
9+
BUILD_ROOT := $(CURDIR)/../src
10+
11+
# Import the build system.
12+
include $(BUILD_ROOT)/system.mk
13+
include $(BUILD_ROOT)/config.mk
14+
include $(BUILD_ROOT)/flags.mk
15+
16+
# Docker settings.
17+
USER := trflynn89
18+
REPO := libfly
19+
BASE := $(shell grep -oP "(?<=FROM )(\S+)" Dockerfile)
20+
21+
# Toolchain versions.
22+
CLANG_VERSION := 11
23+
GCC_VERSION := 10
24+
JDK_VERSION := 15
25+
26+
# Form the tag for the container.
27+
ifeq ($(JDK_VERSION),)
28+
TAG := $(subst :,,$(subst .,,$(BASE)))_clang$(CLANG_VERSION)_gcc$(GCC_VERSION)
29+
else
30+
TAG := $(subst :,,$(subst .,,$(BASE)))_clang$(CLANG_VERSION)_gcc$(GCC_VERSION)_jdk$(JDK_VERSION)
31+
endif
32+
33+
help:
34+
$(Q)echo "Build, push, or run a $(REPO) container."
35+
$(Q)echo
36+
$(Q)echo "Container will be based on $(BASE), tagged $(TAG), and contain:"
37+
$(Q)echo
38+
$(Q)echo " Clang $(CLANG_VERSION)"
39+
$(Q)echo " GCC $(GCC_VERSION)"
40+
ifneq ($(JDK_VERSION),)
41+
$(Q)echo " JDK $(JDK_VERSION)"
42+
endif
43+
$(Q)echo
44+
$(Q)echo "Usage: make [build] [push] [run] [clean]"
45+
46+
build:
47+
$(Q)docker build \
48+
--tag $(USER)/$(REPO):$(TAG) \
49+
--build-arg CLANG_VERSION=$(CLANG_VERSION) \
50+
--build-arg GCC_VERSION=$(GCC_VERSION) \
51+
--build-arg JDK_VERSION=$(JDK_VERSION) \
52+
.
53+
54+
push: build
55+
$(Q)docker push $(USER)/$(REPO):$(TAG)
56+
57+
run: build
58+
$(Q)docker rm $(REPO) > /dev/null 2>&1 || true
59+
60+
$(Q)docker run -it \
61+
--name $(REPO) \
62+
--cap-add SYS_PTRACE \
63+
$(USER)/$(REPO):$(TAG)
64+
65+
clean:
66+
$(Q)docker rm $(REPO) > /dev/null 2>&1 || true
67+
$(Q)docker image rm $(shell docker images -q) > /dev/null 2>&1 || true

build/nix/Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
SOURCE_ROOT := $(abspath $(CURDIR)/../..)
1+
SOURCE_ROOT := $(CURDIR)/../..
22
VERSION := $(shell cat $(SOURCE_ROOT)/VERSION.md)
33

44
include /usr/local/src/fly/api.mk

0 commit comments

Comments
 (0)