diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..378eac2 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +build diff --git a/CMakeLists.txt b/CMakeLists.txt index 1af8671..74de0f6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,11 +11,40 @@ set(CMAKE_AUTORCC ON) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) -find_package(Qt5 COMPONENTS Widgets REQUIRED) +find_package(Qt5 COMPONENTS Widgets) +if (Qt5_FOUND) + add_subdirectory("src") -add_subdirectory("src") + if (UNIX) + install(FILES resources/fdt-viewer.svg DESTINATION share/icons/hicolor/scalable/apps) + install(FILES resources/fdt-viewer.desktop DESTINATION share/applications) + endif (UNIX) +endif() + +find_package(Git REQUIRED) +# the commit's SHA1, and whether the building workspace was dirty or not +execute_process(COMMAND + "${GIT_EXECUTABLE}" describe --match=NeVeRmAtCh --always --dirty + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + OUTPUT_VARIABLE GIT_SHA1 + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + +set(CPACK_GENERATOR "DEB") +set(CPACK_PACKAGE_NAME ${PROJECT_NAME}) +set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}-${GIT_SHA1}") +set(CPACK_PACKAGE_VENDOR "Bartłomiej Burdukiewicz") +set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") +set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Dmitry Mikushin ") +set(CPACK_DEBIAN_PACKAGE_DEPENDS libqt5gui5) +set(CPACK_PACKAGING_INSTALL_PREFIX "usr") + +add_custom_target(docker + COMMAND docker build -f docker/Dockerfile -t ${PROJECT_NAME} . + COMMAND docker create --name ${CPACK_PACKAGE_FILE_NAME} ${PROJECT_NAME} + COMMAND docker cp ${CPACK_PACKAGE_FILE_NAME}:/root/build/${CPACK_PACKAGE_FILE_NAME}.deb ${CMAKE_CURRENT_BINARY_DIR} + COMMAND docker rm -f ${CPACK_PACKAGE_FILE_NAME} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMENT "Building ${PROJECT_NAME} in a Docker container") + +include(CPack) -if (UNIX) - install(FILES resources/fdt-viewer.svg DESTINATION share/icons/hicolor/scalable/apps) - install(FILES resources/fdt-viewer.desktop DESTINATION share/applications) -endif (UNIX) diff --git a/README.md b/README.md index 4c37fa9..4d70897 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Options: -d, --directory open directory. ``` -#### Installation process +#### Installation ```console user@host # git clone --recursive https://github.com/dev-0x7C6/fdt-viewer.git user@host # cd fdt-viewer @@ -33,6 +33,16 @@ user@host # make -j$(nproc) root@host # make install ``` +#### Packaging with Docker +Create a Debian package of ftd-viewer in a Docker container and install it to the host system: +```console +user@host # git clone --recursive https://github.com/dev-0x7C6/fdt-viewer.git +user@host # cd fdt-viewer +user@host # cmake . +user@host # make docker +root@host # dpkg -i "fdt-viewer*.deb" +``` + #### Known bugs - presentation of data-types is under development diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..f30e7b7 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,27 @@ +FROM ubuntu:latest + +LABEL maintainer="dmitry@kernelgen.org" + +ENV DEBIAN_FRONTEND noninteractive +ENV LC_ALL C.UTF-8 +ENV LANG en_US.UTF-8 +ENV LANGUAGE en_US.UTF-8 + +RUN apt-get update && \ + apt-get -y --no-install-recommends install \ + git \ + cmake \ + make \ + g++ \ + qtbase5-dev && \ + apt-get clean + +COPY . /root/ + +WORKDIR /root + +RUN mkdir build && cd build && \ + cmake -DCMAKE_BUILD_TYPE=Release .. && \ + cmake --build . && \ + cpack +