diff --git a/Makefile b/Makefile index bfdcecd..cf8aa76 100644 --- a/Makefile +++ b/Makefile @@ -3,15 +3,22 @@ default: all # Overridable defaults +export SOURCE_DATE_EPOCH ?= $(shell $(PROJECT_ROOT)/build/get_source_date_epoch.sh) +export BUILDTIME ?= $(shell date -u -d '@$(SOURCE_DATE_EPOCH)' --rfc-3339 ns 2>/dev/null | sed -e 's/ /T/') + VERBOSE ?= + PROJECT_NAME ?= webfs PROJECT_ROOT ?= . -OUT ?= $(PROJECT_ROOT)/.build VERSION ?= $(shell cat $(PROJECT_ROOT)/VERSION) +OUT ?= $(PROJECT_ROOT)/.build + PARALLELMFLAGS ?= -j$(shell nproc) UID ?= $(shell id -u) + DOCKER ?= docker DOCKER_BUILDKIT ?= + CONTAINER_USER ?= $(UID) CONTAINER_GROUP ?= $(shell id -g) CONTAINER_WORKSPACE ?= /workspace @@ -56,6 +63,7 @@ DOCKER_RUNFLAGS += --init DOCKER_RUNFLAGS += --user $(CONTAINER_USER):$(CONTAINER_GROUP) DOCKER_RUNFLAGS += --device /dev/fuse --cap-add SYS_ADMIN --security-opt apparmor:unconfined DOCKER_RUNFLAGS += --env SOURCE_DATE_EPOCH +DOCKER_RUNFLAGS += --env BUILDTIME DOCKER_BUILDARGS += CODENAME=$(CODENAME) DOCKER_BUILDARGS += PARALLELMFLAGS=$(PARALLELMFLAGS) @@ -148,7 +156,7 @@ $(OUT)/docker/qemu-arm-static-$(QEMU_VERSION): && curl -fsSL -o $@ $(URL) \ && chmod +x $@ -$(OUT)/% : $(PROJECT_ROOT)/% | $(OUT_DIRS) +$(OUT)/docker/% : $(PROJECT_ROOT)/build/% | $(OUT_DIRS) cp $< $@ $(OUT)/docker/%: $(OUT)/docker/%.dockerfile $(EXTRACT_TARGETS) $(PROJECT_ROOT)/Makefile | $(OUT_DIRS) diff --git a/docker/amd64-ubuntu-builder.dockerfile b/build/amd64-ubuntu-builder.dockerfile similarity index 100% rename from docker/amd64-ubuntu-builder.dockerfile rename to build/amd64-ubuntu-builder.dockerfile diff --git a/docker/arm32v7-ubuntu-builder.dockerfile b/build/arm32v7-ubuntu-builder.dockerfile similarity index 100% rename from docker/arm32v7-ubuntu-builder.dockerfile rename to build/arm32v7-ubuntu-builder.dockerfile diff --git a/build/get_source_date_epoch.sh b/build/get_source_date_epoch.sh new file mode 100755 index 0000000..a8bb69a --- /dev/null +++ b/build/get_source_date_epoch.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +export LANG=C +export LC_ALL=C + +[ -n "$TOPDIR" ] && cd "$TOPDIR" + +try_git() { + [ -e .git ] || return 1 + SOURCE_DATE_EPOCH="$(git log -1 --format=format:%ct)" + [ -n "$SOURCE_DATE_EPOCH" ] +} + +try_hg() { + [ -d .hg ] || return 1 + SOURCE_DATE_EPOCH="$(hg log --template '{date}' -l 1 | cut -d. -f1)" + [ -n "$SOURCE_DATE_EPOCH" ] +} + +try_mtime() { + perl -e 'print((stat $ARGV[0])[9])' "$0" + [ -n "$SOURCE_DATE_EPOCH" ] +} + +try_git || try_hg || try_mtime || SOURCE_DATE_EPOCH="" +echo "$SOURCE_DATE_EPOCH"