diff --git a/.gitignore b/.gitignore index 677be11..9a5b3fa 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/Makefile b/Makefile index 312048a..64531e5 100644 --- a/Makefile +++ b/Makefile @@ -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)) @@ -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) @@ -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) \ @@ -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 diff --git a/docker/base_ubuntu2204.dockerfile.in b/docker/base_ubuntu2204.dockerfile similarity index 82% rename from docker/base_ubuntu2204.dockerfile.in rename to docker/base_ubuntu2204.dockerfile index 2990070..2e10fa9 100644 --- a/docker/base_ubuntu2204.dockerfile.in +++ b/docker/base_ubuntu2204.dockerfile @@ -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; \ @@ -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 diff --git a/docker/docker.mk b/docker/docker.mk index 90f4b18..212618c 100644 --- a/docker/docker.mk +++ b/docker/docker.mk @@ -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 \ . \ ) @@ -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 \ . @@ -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 \ . \ ) diff --git a/docker/test_ubuntu2204.dockerfile b/docker/test_ubuntu2204.dockerfile new file mode 100644 index 0000000..2d41f03 --- /dev/null +++ b/docker/test_ubuntu2204.dockerfile @@ -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 diff --git a/docker/test_ubuntu2204.dockerfile.in b/docker/test_ubuntu2204.dockerfile.in deleted file mode 100644 index 38f3c29..0000000 --- a/docker/test_ubuntu2204.dockerfile.in +++ /dev/null @@ -1,21 +0,0 @@ -FROM @BASE_DOCKER_TAG@ - -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 diff --git a/docker/ubuntu2204.dockerfile b/docker/ubuntu2204.dockerfile new file mode 100644 index 0000000..ebec565 --- /dev/null +++ b/docker/ubuntu2204.dockerfile @@ -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"] diff --git a/docker/ubuntu2204.dockerfile.in b/docker/ubuntu2204.dockerfile.in deleted file mode 100644 index eab87a1..0000000 --- a/docker/ubuntu2204.dockerfile.in +++ /dev/null @@ -1,21 +0,0 @@ -FROM @BASE_DOCKER_TAG@ - -# 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/i18n.mk /usr/src/@UTIL_NAME@/locales/i18n.mk -ADD docker/docker.mk /usr/src/@UTIL_NAME@/docker/docker.mk -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"] diff --git a/src/codeplag/types.py b/src/codeplag/types.py index c036889..9d8b607 100644 --- a/src/codeplag/types.py +++ b/src/codeplag/types.py @@ -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