Skip to content

build: use build arguments instead of using substitution in the dockerfiles. #222

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 25, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,6 @@ debian/copyright

# Substituting
src/codeplag/consts.py
docker/base_ubuntu2204.dockerfile
docker/test_ubuntu2204.dockerfile
docker/ubuntu2204.dockerfile

# Translation
locales/**/*.mo
12 changes: 2 additions & 10 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
UTIL_VERSION := 0.5.16
UTIL_VERSION := 0.5.17
UTIL_NAME := codeplag
PWD := $(shell pwd)

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

BASE_DOCKER_VERSION := 1.2
BASE_DOCKER_VERSION := 1.3
DIST := ubuntu22.04
BASE_DOCKER_TAG := $(shell echo $(UTIL_NAME)-base-${DIST}:$(BASE_DOCKER_VERSION))
TEST_DOCKER_TAG := $(shell echo $(UTIL_NAME)-test-${DIST}:$(UTIL_VERSION))
Expand All @@ -29,9 +29,6 @@ DEBIAN_SUB_FILES := ${DEBIAN_PATH}/changelog \
${DEBIAN_PATH}/control \
${DEBIAN_PATH}/preinst \
${DEBIAN_PATH}/copyright
DOCKER_SUB_FILES := docker/base_ubuntu2204.dockerfile \
docker/test_ubuntu2204.dockerfile \
docker/ubuntu2204.dockerfile

PYTHON_REQUIRED_LIBS := $(shell python3 setup.py --install-requirements)
PYTHON_BUILD_LIBS := $(shell python3 setup.py --build-requirements)
Expand All @@ -51,13 +48,10 @@ substitute = @sed \
-e "s|@CODEPLAG_LOG_PATH@|${CODEPLAG_LOG_PATH}|g" \
-e "s|@DEVEL_SUFFIX@|${DEVEL_SUFFIX}|g" \
-e "s|@PYTHON_REQUIRED_LIBS@|${PYTHON_REQUIRED_LIBS}|g" \
-e "s|@PYTHON_BUILD_LIBS@|${PYTHON_BUILD_LIBS}|g" \
-e "s|@PYTHON_TEST_LIBS@|${PYTHON_TEST_LIBS}|g" \
-e "s|@DIST@|${DIST}|g" \
-e "s|@LOGS_PATH@|${LOGS_PATH}|g" \
-e "s|@LIB_PATH@|${LIB_PATH}|g" \
-e "s|@CONFIG_PATH@|${CONFIG_PATH}|g" \
-e "s|@BASE_DOCKER_TAG@|${BASE_DOCKER_TAG}|g" \
-e "s|@DEBIAN_PACKAGES_PATH@|${DEBIAN_PACKAGES_PATH}|g" \
-e "s|@DEB_PKG_NAME@|${DEB_PKG_NAME}|g" \
$(1) > $(2) \
Expand Down Expand Up @@ -165,8 +159,6 @@ clean: clean-cache
clean-all: clean
rm --force src/$(UTIL_NAME)/consts.py

rm --force docker/*.dockerfile

rm --force --recursive $(DEBIAN_PACKAGES_PATH)
rm --force ${DEBIAN_PATH}/changelog
rm --force ${DEBIAN_PATH}/control
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
FROM ubuntu:22.04

ARG PYTHON_REQUIRED_LIBS
ARG UTIL_NAME

# Remove diverted man binary to prevent man-pages being replaced with "minimized" message.
RUN if [ "$(dpkg-divert --truename /usr/bin/man)" = "/usr/bin/man.REAL" ]; then \
rm -f /usr/bin/man; \
Expand All @@ -12,7 +15,7 @@ RUN apt-get install -y clang libncurses5
RUN apt-get install -y man
RUN apt-get install -y vim nano less

RUN pip3 install @PYTHON_REQUIRED_LIBS@
RUN pip3 install $PYTHON_REQUIRED_LIBS

VOLUME /usr/src/works
WORKDIR /usr/src/@UTIL_NAME@
WORKDIR /usr/src/$UTIL_NAME
11 changes: 11 additions & 0 deletions docker/docker.mk
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ docker-base-image: substitute-sources substitute-docker
export DOCKER_BUILDKIT=1 && \
docker image build \
--tag "$(BASE_DOCKER_TAG)" \
--build-arg PYTHON_REQUIRED_LIBS="$(PYTHON_REQUIRED_LIBS)" \
--build-arg UTIL_NAME="$(UTIL_NAME)" \
--file docker/base_ubuntu2204.dockerfile \
. \
)
Expand All @@ -26,6 +28,11 @@ docker-test-image: docker-base-image
@docker image inspect $(TEST_DOCKER_TAG) > /dev/null 2>&1 || \
docker image build \
--tag "$(TEST_DOCKER_TAG)" \
--build-arg BASE_DOCKER_TAG="$(BASE_DOCKER_TAG)" \
--build-arg PYTHON_TEST_LIBS="$(PYTHON_TEST_LIBS)" \
--build-arg PYTHON_BUILD_LIBS="$(PYTHON_BUILD_LIBS)" \
--build-arg LOGS_PATH="$(LOGS_PATH)" \
--build-arg UTIL_NAME="$(UTIL_NAME)" \
--file docker/test_ubuntu2204.dockerfile \
.

Expand Down Expand Up @@ -67,6 +74,10 @@ docker-image: docker-base-image docker-test-image
make docker-build-package && \
docker image build \
--tag "$(DOCKER_TAG)" \
--build-arg BASE_DOCKER_TAG="$(BASE_DOCKER_TAG)" \
--build-arg UTIL_NAME="$(UTIL_NAME)" \
--build-arg DEBIAN_PACKAGES_PATH="$(DEBIAN_PACKAGES_PATH)" \
--build-arg DEB_PKG_NAME="$(DEB_PKG_NAME)" \
--file docker/ubuntu2204.dockerfile \
. \
)
Expand Down
27 changes: 27 additions & 0 deletions docker/test_ubuntu2204.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
ARG BASE_DOCKER_TAG
FROM $BASE_DOCKER_TAG

ARG PYTHON_TEST_LIBS
ARG PYTHON_BUILD_LIBS
ARG LOGS_PATH
ARG UTIL_NAME

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update
RUN apt-get install -y debhelper
RUN pip3 install $PYTHON_TEST_LIBS $PYTHON_BUILD_LIBS
RUN mkdir -p $LOGS_PATH

# TODO: Move to middle docker file or make another solution
ADD setup.py /usr/src/$UTIL_NAME/setup.py
ADD pyproject.toml /usr/src/$UTIL_NAME/pyproject.toml
ADD src/ /usr/src/$UTIL_NAME/src
ADD README.md /usr/src/$UTIL_NAME/README.md
ADD LICENSE /usr/src/$UTIL_NAME/LICENSE
ADD Makefile /usr/src/$UTIL_NAME/Makefile
ADD locales/ /usr/src/$UTIL_NAME/locales
ADD docker/docker.mk /usr/src/$UTIL_NAME/docker/docker.mk
ADD debian/ /usr/src/$UTIL_NAME/debian

CMD make test
21 changes: 0 additions & 21 deletions docker/test_ubuntu2204.dockerfile.in

This file was deleted.

18 changes: 18 additions & 0 deletions docker/ubuntu2204.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
ARG BASE_DOCKER_TAG
FROM $BASE_DOCKER_TAG

ARG UTIL_NAME
ARG DEBIAN_PACKAGES_PATH
ARG DEB_PKG_NAME

ADD LICENSE /usr/src/$UTIL_NAME/LICENSE
ADD $DEBIAN_PACKAGES_PATH /usr/src/$UTIL_NAME/$DEBIAN_PACKAGES_PATH

RUN apt-get install -y /usr/src/$UTIL_NAME/$DEBIAN_PACKAGES_PATH/$DEB_PKG_NAME.deb
# TODO: Fix this hook. apt-get don't install manpage into image.
RUN install -D -m 0644 $DEBIAN_PACKAGES_PATH/$UTIL_NAME.1 /usr/share/man/man1/
RUN rm --recursive /usr/src/$UTIL_NAME/debian

RUN register-python-argcomplete $UTIL_NAME >> ~/.bashrc

CMD ["/bin/bash"]
21 changes: 0 additions & 21 deletions docker/ubuntu2204.dockerfile.in

This file was deleted.

1 change: 1 addition & 0 deletions src/codeplag/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ class ExitCode(IntEnum):
EXIT_KEYBOARD = 1
EXIT_INVAL = 3
EXIT_UNKNOWN = 5
# Exit codes that are 200 or greater are auxiliary codes.
EXIT_FOUND_SIM = 200


Expand Down
Loading