Merge branch 'master' of codeberg.org:distrust/toolchain
This commit is contained in:
commit
c71bfa31e0
71
Makefile
71
Makefile
|
@ -35,7 +35,7 @@ VERSION := $(shell TZ=UTC0 git show --quiet --date='format-local:%Y.%m.%d' --for
|
||||||
DIST_DIR := dist
|
DIST_DIR := dist
|
||||||
CONFIG_DIR := config
|
CONFIG_DIR := config
|
||||||
CACHE_DIR_ROOT := cache
|
CACHE_DIR_ROOT := cache
|
||||||
FETCH_DIR := $(CACHE_DIR_ROOT)/fetch
|
FETCH_DIR := fetch
|
||||||
ifeq ($(TARGET),$(ARCH))
|
ifeq ($(TARGET),$(ARCH))
|
||||||
CACHE_DIR := $(CACHE_DIR_ROOT)/$(TARGET)
|
CACHE_DIR := $(CACHE_DIR_ROOT)/$(TARGET)
|
||||||
else
|
else
|
||||||
|
@ -45,18 +45,28 @@ BIN_DIR := $(CACHE_DIR_ROOT)/bin
|
||||||
SRC_DIR := src
|
SRC_DIR := src
|
||||||
KEY_DIR := keys
|
KEY_DIR := keys
|
||||||
OUT_DIR := out
|
OUT_DIR := out
|
||||||
|
|
||||||
export
|
|
||||||
|
|
||||||
docker = docker
|
docker = docker
|
||||||
|
|
||||||
include $(CONFIG_DIR)/global.env
|
include $(CONFIG_DIR)/toolchain.env
|
||||||
export $(shell sed 's/=.*//' $(CONFIG_DIR)/global.env)
|
export $(shell sed 's/=.*//' $(CONFIG_DIR)/toolchain.env)
|
||||||
|
export
|
||||||
|
|
||||||
|
AUTOBUILD_TOOLCHAIN := true
|
||||||
|
ifeq ($(AUTOBUILD_TOOLCHAIN),true)
|
||||||
|
ifeq ("$(wildcard $(CACHE_DIR_ROOT)/make.env)","")
|
||||||
|
echo := $(info $(shell echo "Initializing toolchain."))
|
||||||
|
build_env := $(shell $(MAKE) AUTOBUILD_TOOLCHAIN=false toolchain )
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
ifneq (,$(wildcard $(CACHE_DIR_ROOT)/make.env))
|
||||||
|
include $(CACHE_DIR_ROOT)/make.env
|
||||||
|
export $(shell sed 's/=.*//' $(CACHE_DIR_ROOT)/make.env)
|
||||||
|
endif
|
||||||
|
|
||||||
## Use env vars from existing release if present
|
## Use env vars from existing release if present
|
||||||
ifneq (,$(wildcard $(DIST_DIR)/release.env))
|
ifneq (,$(wildcard $(DIST_DIR)/release.env))
|
||||||
include $(DIST_DIR)/release.env
|
include $(DIST_DIR)/release.env
|
||||||
export
|
export
|
||||||
endif
|
endif
|
||||||
|
|
||||||
executables = $(docker) git git-lfs patch
|
executables = $(docker) git git-lfs patch
|
||||||
|
@ -68,7 +78,8 @@ toolchain: \
|
||||||
$(BIN_DIR) \
|
$(BIN_DIR) \
|
||||||
$(OUT_DIR) \
|
$(OUT_DIR) \
|
||||||
$(CACHE_DIR_ROOT)/toolchain.state \
|
$(CACHE_DIR_ROOT)/toolchain.state \
|
||||||
$(CACHE_DIR_ROOT)/toolchain.env
|
$(CACHE_DIR_ROOT)/container.env \
|
||||||
|
$(CACHE_DIR_ROOT)/make.env
|
||||||
|
|
||||||
# Launch a shell inside the toolchain container
|
# Launch a shell inside the toolchain container
|
||||||
.PHONY: toolchain-shell
|
.PHONY: toolchain-shell
|
||||||
|
@ -129,12 +140,25 @@ $(FETCH_DIR):
|
||||||
$(OUT_DIR):
|
$(OUT_DIR):
|
||||||
mkdir -p $@
|
mkdir -p $@
|
||||||
|
|
||||||
$(CACHE_DIR_ROOT)/toolchain.env: \
|
$(CACHE_DIR_ROOT)/make.env $(CACHE_DIR_ROOT)/container.env: \
|
||||||
$(CACHE_DIR) \
|
$(CONFIG_DIR)/global.env \
|
||||||
$(SRC_DIR)/toolchain/scripts/environment
|
$(CONFIG_DIR)/toolchain.env \
|
||||||
$(SRC_DIR)/toolchain/scripts/environment > $@
|
$(CACHE_DIR_ROOT)/toolchain.state
|
||||||
|
env > $(CACHE_DIR)/bootstrap.env
|
||||||
|
docker run \
|
||||||
|
--rm \
|
||||||
|
--env UID=$(UID) \
|
||||||
|
--env GID=$(GID) \
|
||||||
|
--env-file $(CACHE_DIR)/bootstrap.env \
|
||||||
|
--platform=linux/$(ARCH) \
|
||||||
|
--volume $(TOOLCHAIN_VOLUME) \
|
||||||
|
--workdir $(TOOLCHAIN_WORKDIR) \
|
||||||
|
$(shell cat cache/toolchain.state 2> /dev/null) \
|
||||||
|
$(SRC_DIR)/toolchain/scripts/environment $(CACHE_DIR_ROOT)
|
||||||
|
rm $(CACHE_DIR)/bootstrap.env
|
||||||
|
|
||||||
$(CACHE_DIR_ROOT)/toolchain.tar: \
|
$(CACHE_DIR_ROOT)/toolchain.tar: \
|
||||||
|
$(CONFIG_DIR)/toolchain.env \
|
||||||
$(SRC_DIR)/toolchain/Dockerfile \
|
$(SRC_DIR)/toolchain/Dockerfile \
|
||||||
$(CONFIG_DIR)/toolchain/package-hashes-$(ARCH).txt \
|
$(CONFIG_DIR)/toolchain/package-hashes-$(ARCH).txt \
|
||||||
$(CONFIG_DIR)/toolchain/packages-base.list \
|
$(CONFIG_DIR)/toolchain/packages-base.list \
|
||||||
|
@ -167,6 +191,22 @@ $(OUT_DIR)/release.env: | $(OUT_DIR)
|
||||||
check_executables := $(foreach exec,$(executables),\$(if \
|
check_executables := $(foreach exec,$(executables),\$(if \
|
||||||
$(shell which $(exec)),some string,$(error "No $(exec) in PATH")))
|
$(shell which $(exec)),some string,$(error "No $(exec) in PATH")))
|
||||||
|
|
||||||
|
define sha256_file
|
||||||
|
$$(openssl sha256 $(1) | awk '{ print $$2}')
|
||||||
|
endef
|
||||||
|
|
||||||
|
define fetch_file
|
||||||
|
bash -c " \
|
||||||
|
echo \"Fetching $(1)\" \
|
||||||
|
&& curl \
|
||||||
|
--location $(1) \
|
||||||
|
--output $(CACHE_DIR)/$(notdir $@) \
|
||||||
|
&& [[ "\""$(call sha256_file,$(CACHE_DIR)/$(notdir $@))"\"" == "\""$(2)"\"" ]] \
|
||||||
|
|| { echo 'Error: Hash check failed'; exit 1; } \
|
||||||
|
&& mv $(CACHE_DIR)/$(notdir $@) $@; \
|
||||||
|
"
|
||||||
|
endef
|
||||||
|
|
||||||
define git_clone
|
define git_clone
|
||||||
[ -d $(1) ] || \
|
[ -d $(1) ] || \
|
||||||
mkdir -p $(FETCH_DIR) && \
|
mkdir -p $(FETCH_DIR) && \
|
||||||
|
@ -213,7 +253,7 @@ endef
|
||||||
|
|
||||||
define toolchain
|
define toolchain
|
||||||
docker run \
|
docker run \
|
||||||
--rm \
|
--rm \
|
||||||
--tty \
|
--tty \
|
||||||
$(2) \
|
$(2) \
|
||||||
--env UID=$(UID) \
|
--env UID=$(UID) \
|
||||||
|
@ -223,8 +263,7 @@ define toolchain
|
||||||
--cpus $(CPUS) \
|
--cpus $(CPUS) \
|
||||||
--volume $(TOOLCHAIN_VOLUME) \
|
--volume $(TOOLCHAIN_VOLUME) \
|
||||||
--workdir $(TOOLCHAIN_WORKDIR) \
|
--workdir $(TOOLCHAIN_WORKDIR) \
|
||||||
--env-file=$(CONFIG_DIR)/global.env \
|
--env-file=$(CACHE_DIR_ROOT)/container.env \
|
||||||
--env-file=$(CACHE_DIR_ROOT)/toolchain.env \
|
|
||||||
$(shell cat cache/toolchain.state 2> /dev/null) \
|
$(shell cat cache/toolchain.state 2> /dev/null) \
|
||||||
$(SRC_DIR)/toolchain/scripts/host-env bash -c $(1)
|
$(SRC_DIR)/toolchain/scripts/host-env bash -c $(1)
|
||||||
endef
|
endef
|
||||||
|
|
|
@ -1,7 +1,12 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
CACHE_DIR_ROOT=${1?}
|
||||||
HOME=/home/build
|
HOME=/home/build
|
||||||
cat <<- EOF
|
CONFIG_DIR=/home/build/config
|
||||||
|
|
||||||
|
cat ${CONFIG_DIR}/toolchain.env > ${CACHE_DIR_ROOT}/container.env
|
||||||
|
|
||||||
|
cat <<- EOF >> ${CACHE_DIR_ROOT}/container.env
|
||||||
HOME=${HOME}
|
HOME=${HOME}
|
||||||
PATH=${HOME}/${BIN_DIR}:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
PATH=${HOME}/${BIN_DIR}:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||||
TZ=UTC
|
TZ=UTC
|
||||||
|
@ -33,3 +38,7 @@ cat <<- EOF
|
||||||
BIN_DIR=${HOME}/${BIN_DIR}
|
BIN_DIR=${HOME}/${BIN_DIR}
|
||||||
FETCH_DIR=${HOME}/${FETCH_DIR}
|
FETCH_DIR=${HOME}/${FETCH_DIR}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
envsubst < ${CONFIG_DIR}/global.env > ${CACHE_DIR_ROOT}/make.env
|
||||||
|
|
||||||
|
cat ${CACHE_DIR_ROOT}/make.env >> ${CACHE_DIR_ROOT}/container.env
|
||||||
|
|
|
@ -26,7 +26,7 @@ apt-get install -y --download-only --reinstall $( \
|
||||||
apt-get install \
|
apt-get install \
|
||||||
-y \
|
-y \
|
||||||
--download-only \
|
--download-only \
|
||||||
sudo \
|
sudo gettext \
|
||||||
$(cat /config/toolchain/packages-base.list)
|
$(cat /config/toolchain/packages-base.list)
|
||||||
|
|
||||||
( cd /var/cache/apt/archives \
|
( cd /var/cache/apt/archives \
|
||||||
|
|
Loading…
Reference in New Issue