Skip to content

Commit 057b0f0

Browse files
authored
build: use build arguments instead of using substitution in the dockerfiles. (#222)
1 parent 79b100c commit 057b0f0

File tree

9 files changed

+64
-57
lines changed

9 files changed

+64
-57
lines changed

.gitignore

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,6 @@ debian/copyright
3131

3232
# Substituting
3333
src/codeplag/consts.py
34-
docker/base_ubuntu2204.dockerfile
35-
docker/test_ubuntu2204.dockerfile
36-
docker/ubuntu2204.dockerfile
3734

3835
# Translation
3936
locales/**/*.mo

Makefile

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
UTIL_VERSION := 0.5.16
1+
UTIL_VERSION := 0.5.17
22
UTIL_NAME := codeplag
33
PWD := $(shell pwd)
44

55
USER_UID ?= $(shell id --user)
66
USER_GID ?= $(shell id --group)
77

8-
BASE_DOCKER_VERSION := 1.2
8+
BASE_DOCKER_VERSION := 1.3
99
DIST := ubuntu22.04
1010
BASE_DOCKER_TAG := $(shell echo $(UTIL_NAME)-base-${DIST}:$(BASE_DOCKER_VERSION))
1111
TEST_DOCKER_TAG := $(shell echo $(UTIL_NAME)-test-${DIST}:$(UTIL_VERSION))
@@ -29,9 +29,6 @@ DEBIAN_SUB_FILES := ${DEBIAN_PATH}/changelog \
2929
${DEBIAN_PATH}/control \
3030
${DEBIAN_PATH}/preinst \
3131
${DEBIAN_PATH}/copyright
32-
DOCKER_SUB_FILES := docker/base_ubuntu2204.dockerfile \
33-
docker/test_ubuntu2204.dockerfile \
34-
docker/ubuntu2204.dockerfile
3532

3633
PYTHON_REQUIRED_LIBS := $(shell python3 setup.py --install-requirements)
3734
PYTHON_BUILD_LIBS := $(shell python3 setup.py --build-requirements)
@@ -51,13 +48,10 @@ substitute = @sed \
5148
-e "s|@CODEPLAG_LOG_PATH@|${CODEPLAG_LOG_PATH}|g" \
5249
-e "s|@DEVEL_SUFFIX@|${DEVEL_SUFFIX}|g" \
5350
-e "s|@PYTHON_REQUIRED_LIBS@|${PYTHON_REQUIRED_LIBS}|g" \
54-
-e "s|@PYTHON_BUILD_LIBS@|${PYTHON_BUILD_LIBS}|g" \
55-
-e "s|@PYTHON_TEST_LIBS@|${PYTHON_TEST_LIBS}|g" \
5651
-e "s|@DIST@|${DIST}|g" \
5752
-e "s|@LOGS_PATH@|${LOGS_PATH}|g" \
5853
-e "s|@LIB_PATH@|${LIB_PATH}|g" \
5954
-e "s|@CONFIG_PATH@|${CONFIG_PATH}|g" \
60-
-e "s|@BASE_DOCKER_TAG@|${BASE_DOCKER_TAG}|g" \
6155
-e "s|@DEBIAN_PACKAGES_PATH@|${DEBIAN_PACKAGES_PATH}|g" \
6256
-e "s|@DEB_PKG_NAME@|${DEB_PKG_NAME}|g" \
6357
$(1) > $(2) \
@@ -165,8 +159,6 @@ clean: clean-cache
165159
clean-all: clean
166160
rm --force src/$(UTIL_NAME)/consts.py
167161

168-
rm --force docker/*.dockerfile
169-
170162
rm --force --recursive $(DEBIAN_PACKAGES_PATH)
171163
rm --force ${DEBIAN_PATH}/changelog
172164
rm --force ${DEBIAN_PATH}/control
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
FROM ubuntu:22.04
22

3+
ARG PYTHON_REQUIRED_LIBS
4+
ARG UTIL_NAME
5+
36
# Remove diverted man binary to prevent man-pages being replaced with "minimized" message.
47
RUN if [ "$(dpkg-divert --truename /usr/bin/man)" = "/usr/bin/man.REAL" ]; then \
58
rm -f /usr/bin/man; \
@@ -12,7 +15,7 @@ RUN apt-get install -y clang libncurses5
1215
RUN apt-get install -y man
1316
RUN apt-get install -y vim nano less
1417

15-
RUN pip3 install @PYTHON_REQUIRED_LIBS@
18+
RUN pip3 install $PYTHON_REQUIRED_LIBS
1619

1720
VOLUME /usr/src/works
18-
WORKDIR /usr/src/@UTIL_NAME@
21+
WORKDIR /usr/src/$UTIL_NAME

docker/docker.mk

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ docker-base-image: substitute-sources substitute-docker
1818
export DOCKER_BUILDKIT=1 && \
1919
docker image build \
2020
--tag "$(BASE_DOCKER_TAG)" \
21+
--build-arg PYTHON_REQUIRED_LIBS="$(PYTHON_REQUIRED_LIBS)" \
22+
--build-arg UTIL_NAME="$(UTIL_NAME)" \
2123
--file docker/base_ubuntu2204.dockerfile \
2224
. \
2325
)
@@ -26,6 +28,11 @@ docker-test-image: docker-base-image
2628
@docker image inspect $(TEST_DOCKER_TAG) > /dev/null 2>&1 || \
2729
docker image build \
2830
--tag "$(TEST_DOCKER_TAG)" \
31+
--build-arg BASE_DOCKER_TAG="$(BASE_DOCKER_TAG)" \
32+
--build-arg PYTHON_TEST_LIBS="$(PYTHON_TEST_LIBS)" \
33+
--build-arg PYTHON_BUILD_LIBS="$(PYTHON_BUILD_LIBS)" \
34+
--build-arg LOGS_PATH="$(LOGS_PATH)" \
35+
--build-arg UTIL_NAME="$(UTIL_NAME)" \
2936
--file docker/test_ubuntu2204.dockerfile \
3037
.
3138

@@ -67,6 +74,10 @@ docker-image: docker-base-image docker-test-image
6774
make docker-build-package && \
6875
docker image build \
6976
--tag "$(DOCKER_TAG)" \
77+
--build-arg BASE_DOCKER_TAG="$(BASE_DOCKER_TAG)" \
78+
--build-arg UTIL_NAME="$(UTIL_NAME)" \
79+
--build-arg DEBIAN_PACKAGES_PATH="$(DEBIAN_PACKAGES_PATH)" \
80+
--build-arg DEB_PKG_NAME="$(DEB_PKG_NAME)" \
7081
--file docker/ubuntu2204.dockerfile \
7182
. \
7283
)

docker/test_ubuntu2204.dockerfile

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
ARG BASE_DOCKER_TAG
2+
FROM $BASE_DOCKER_TAG
3+
4+
ARG PYTHON_TEST_LIBS
5+
ARG PYTHON_BUILD_LIBS
6+
ARG LOGS_PATH
7+
ARG UTIL_NAME
8+
9+
ENV DEBIAN_FRONTEND=noninteractive
10+
11+
RUN apt-get update
12+
RUN apt-get install -y debhelper
13+
RUN pip3 install $PYTHON_TEST_LIBS $PYTHON_BUILD_LIBS
14+
RUN mkdir -p $LOGS_PATH
15+
16+
# TODO: Move to middle docker file or make another solution
17+
ADD setup.py /usr/src/$UTIL_NAME/setup.py
18+
ADD pyproject.toml /usr/src/$UTIL_NAME/pyproject.toml
19+
ADD src/ /usr/src/$UTIL_NAME/src
20+
ADD README.md /usr/src/$UTIL_NAME/README.md
21+
ADD LICENSE /usr/src/$UTIL_NAME/LICENSE
22+
ADD Makefile /usr/src/$UTIL_NAME/Makefile
23+
ADD locales/ /usr/src/$UTIL_NAME/locales
24+
ADD docker/docker.mk /usr/src/$UTIL_NAME/docker/docker.mk
25+
ADD debian/ /usr/src/$UTIL_NAME/debian
26+
27+
CMD make test

docker/test_ubuntu2204.dockerfile.in

Lines changed: 0 additions & 21 deletions
This file was deleted.

docker/ubuntu2204.dockerfile

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
ARG BASE_DOCKER_TAG
2+
FROM $BASE_DOCKER_TAG
3+
4+
ARG UTIL_NAME
5+
ARG DEBIAN_PACKAGES_PATH
6+
ARG DEB_PKG_NAME
7+
8+
ADD LICENSE /usr/src/$UTIL_NAME/LICENSE
9+
ADD $DEBIAN_PACKAGES_PATH /usr/src/$UTIL_NAME/$DEBIAN_PACKAGES_PATH
10+
11+
RUN apt-get install -y /usr/src/$UTIL_NAME/$DEBIAN_PACKAGES_PATH/$DEB_PKG_NAME.deb
12+
# TODO: Fix this hook. apt-get don't install manpage into image.
13+
RUN install -D -m 0644 $DEBIAN_PACKAGES_PATH/$UTIL_NAME.1 /usr/share/man/man1/
14+
RUN rm --recursive /usr/src/$UTIL_NAME/debian
15+
16+
RUN register-python-argcomplete $UTIL_NAME >> ~/.bashrc
17+
18+
CMD ["/bin/bash"]

docker/ubuntu2204.dockerfile.in

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/codeplag/types.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ class ExitCode(IntEnum):
144144
EXIT_KEYBOARD = 1
145145
EXIT_INVAL = 3
146146
EXIT_UNKNOWN = 5
147+
# Exit codes that are 200 or greater are auxiliary codes.
147148
EXIT_FOUND_SIM = 200
148149

149150

0 commit comments

Comments
 (0)