diff --git a/.gitignore b/.gitignore index ac3e94b..4c9aa89 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,11 @@ CMakeFiles/ Makefile cmake_install.cmake build +package-debian/out + +#IDE +.idea/ +*.iml # Executables mcmap diff --git a/package-debian/Makefile b/package-debian/Makefile new file mode 100644 index 0000000..32350ba --- /dev/null +++ b/package-debian/Makefile @@ -0,0 +1,25 @@ +COMMIT_SHA_SHORT ?= $(shell git rev-parse --short=12 HEAD) +PWD_DIR:= ${CURDIR} +SHELL := /bin/bash + +default: help; + +# ====================================================================================== +build-builder-debian: ## build the builder image that contains the source code + @docker build -f build-debian.dockerfile -t mcmap-builder-debian:latest ./.. + +build-debian: build-builder-debian ## build for linux using docker + @mkdir -p out + @docker run -it --rm -v ${PWD_DIR}/out:/out mcmap-builder-debian:latest /bin/bash -c "mkdir -p /mcmap/build && \ + cd /mcmap/build && \ + cmake .. && \ + make -j mcmap mcmap-gui && \ + cp /mcmap/build/bin/* /out" + +package-debian: build-debian ## package the just compiled binary + @docker run -it --rm -v ${PWD_DIR}/out:/out mcmap-builder-debian:latest /bin/bash -c "cd /out && \ + nfpm pkg -f /mcmap/package-debian/nfpm.yaml -p deb" + + +help: ## Show this help + @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m- %-20s\033[0m %s\n", $$1, $$2}' diff --git a/package-debian/build-debian.dockerfile b/package-debian/build-debian.dockerfile new file mode 100644 index 0000000..5d0262b --- /dev/null +++ b/package-debian/build-debian.dockerfile @@ -0,0 +1,12 @@ +FROM ubuntu:22.10 + +ARG DEBIAN_FRONTEND=noninteractive +ENV TZ=Etc/PDT +RUN apt-get update && apt-get install -y \ + git make g++ libpng-dev cmake libspdlog-dev qttools5-dev + +# install nfpm +RUN echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | tee /etc/apt/sources.list.d/goreleaser.list && \ + apt-get update && apt-get install -y nfpm + +COPY . /mcmap diff --git a/package-debian/nfpm.yaml b/package-debian/nfpm.yaml new file mode 100644 index 0000000..bd3be56 --- /dev/null +++ b/package-debian/nfpm.yaml @@ -0,0 +1,33 @@ +# mcmap packaging config +# expects to be run from the `bin` directory + +name: "mcmap" +arch: "amd64" +platform: "linux" +version: "3.0.2" +section: "default" +priority: "extra" +description: | + Mcmap is a tool allowing you to create isometric renders of your Minecraft save file. +maintainer: "Andres Bott " +homepage: "https://github.com/spoutn1k/mcmap" +license: "GPL-3.0 license" +contents: +- src: ./mcmap # this path is mounted into the container + dst: /usr/local/bin/mcmap + file_info: + mode: 0755 + owner: root + group: root +- src: ./mcmap-gui + dst: /usr/local/bin/mcmap-gui + file_info: + mode: 0755 + owner: root + group: root +overrides: + deb: + depends: + - libpng16-16 + - libgomp1 + - qtbase5-dev