147 lines
5.9 KiB
Makefile
147 lines
5.9 KiB
Makefile
OPENWRT_DEVICE ?= 192.168.1.1
|
|
BACKUP_DATE ?=
|
|
|
|
GIT_VERSION := $(shell git describe --always)
|
|
DATE_VERSION := $(shell date +%Y.%m.%d)
|
|
FULL_VERSION := v$(DATE_VERSION)-$(GIT_VERSION)
|
|
|
|
OPENWRT_VERSION ?= 22.03.2
|
|
OPENWRT_TARGET ?= mvebu/cortexa9
|
|
OPENWRT_TARGET_DASHED ?= $(shell echo $(OPENWRT_TARGET) | sed 's|/|-|')
|
|
OPENWRT_PROFILE ?= linksys_wrt1200ac
|
|
OPENWRT_PACKAGES ?= $(shell cat packages.txt)
|
|
EXTRA_IMAGE_NAME ?= emissary-$(FULL_VERSION)
|
|
BIN_DIR_NAME_SUFFIX ?=
|
|
|
|
IMAGEBUILDER_URL ?= https://downloads.openwrt.org/releases/$(OPENWRT_VERSION)/targets/$(OPENWRT_TARGET)/openwrt-imagebuilder-$(OPENWRT_VERSION)-$(OPENWRT_TARGET_DASHED).Linux-x86_64.tar.xz
|
|
|
|
IMAGEBUILDER_ARCHIVE_PATH ?= tmp/imagebuilder-$(OPENWRT_VERSION)-$(OPENWRT_TARGET_DASHED).tar.xz
|
|
IMAGEBUILDER_DIR_PATH ?= $(PWD)/imagebuilder/$(OPENWRT_VERSION)/$(OPENWRT_TARGET)
|
|
IMAGEBUILDER_CUSTOM_PACKAGES_DIR_PATH := $(IMAGEBUILDER_DIR_PATH)/packages
|
|
IMAGEBUILDER_CUSTOM_FILES_DIR_PATH := $(IMAGEBUILDER_DIR_PATH)/files
|
|
|
|
BIN_DIR := "$(shell readlink -f bin)/$(OPENWRT_VERSION)/$(OPENWRT_TARGET)/$(OPENWRT_PROFILE)$(BIN_DIR_NAME_SUFFIX)"
|
|
|
|
EMISSARY_RELEASE ?= $(shell cat emissary_release.txt)
|
|
EMISSARY_ARCH ?= armv6
|
|
|
|
EMISSARY_RECONCILIATION_INTERVAL ?=
|
|
EMISSARY_SERVER_URL ?=
|
|
|
|
BASE_INSTALL ?= install-emissary-files install-common-uci-defaults install-common-additional-agent-collectors
|
|
ADDITIONAL_INSTALL ?=
|
|
ADDITIONAL_OPENWRT_PACKAGES ?=
|
|
|
|
include targets/*.mk
|
|
include install/*.mk
|
|
|
|
all:
|
|
|
|
build: $(IMAGEBUILDER_DIR_PATH) $(IMAGEBUILDER_CUSTOM_PACKAGES_DIR_PATH) $(IMAGEBUILDER_CUSTOM_FILES_DIR_PATH)
|
|
# Create artefacts directory
|
|
mkdir -p "$(BIN_DIR)"
|
|
|
|
# Add local packages to repositories
|
|
sed -i -n -e '/^src imagebuilder file:packages/!p' -e '$$asrc imagebuilder file:packages' -e 's/^option check_signature//' "$(IMAGEBUILDER_DIR_PATH)/repositories.conf"
|
|
|
|
# Cleanup old packages signature
|
|
rm -f $(IMAGEBUILDER_DIR_PATH)/Packages $(IMAGEBUILDER_DIR_PATH)/Packages.gz $(IMAGEBUILDER_DIR_PATH)/Packages.sig
|
|
|
|
# Build firmware
|
|
$(MAKE) \
|
|
-C "$(IMAGEBUILDER_DIR_PATH)" \
|
|
EXTRA_IMAGE_NAME="$(EXTRA_IMAGE_NAME)" \
|
|
PROFILE="$(OPENWRT_PROFILE)" \
|
|
PACKAGES="$(OPENWRT_PACKAGES) $(ADDITIONAL_OPENWRT_PACKAGES)" \
|
|
CONFIG_IPV6=n \
|
|
FILES="$(IMAGEBUILDER_CUSTOM_FILES_DIR_PATH)" \
|
|
BIN_DIR="$(BIN_DIR)" \
|
|
clean image
|
|
|
|
$(IMAGEBUILDER_DIR_PATH): $(IMAGEBUILDER_ARCHIVE_PATH)
|
|
mkdir -p "$(IMAGEBUILDER_DIR_PATH)"
|
|
tar -xf "$(IMAGEBUILDER_ARCHIVE_PATH)" --strip-components 1 -C "$(IMAGEBUILDER_DIR_PATH)"
|
|
|
|
$(IMAGEBUILDER_ARCHIVE_PATH):
|
|
mkdir -p $(shell dirname "$(IMAGEBUILDER_ARCHIVE_PATH)")
|
|
wget -O "$(IMAGEBUILDER_ARCHIVE_PATH)" "$(IMAGEBUILDER_URL)"
|
|
|
|
.PHONY: $(IMAGEBUILDER_CUSTOM_PACKAGES_DIR_PATH)
|
|
$(IMAGEBUILDER_CUSTOM_PACKAGES_DIR_PATH):
|
|
rm -rf "$(IMAGEBUILDER_CUSTOM_PACKAGES_DIR_PATH)"
|
|
mkdir -p packages
|
|
ln -fs "$(shell readlink -f packages)" "$(IMAGEBUILDER_CUSTOM_PACKAGES_DIR_PATH)"
|
|
|
|
.PHONY: $(IMAGEBUILDER_CUSTOM_FILES_DIR_PATH)
|
|
$(IMAGEBUILDER_CUSTOM_FILES_DIR_PATH):
|
|
rm -rf "$(IMAGEBUILDER_CUSTOM_FILES_DIR_PATH)"
|
|
mkdir -p "$(IMAGEBUILDER_CUSTOM_FILES_DIR_PATH)/etc"
|
|
|
|
echo "# Firmware built with https://forge.cadoles.com/arcad/emissary-firmware" > "$(IMAGEBUILDER_CUSTOM_FILES_DIR_PATH)/etc/emissary_firmware"
|
|
echo "FIRMWARE_VERSION=$(FULL_VERSION)" >> "$(IMAGEBUILDER_CUSTOM_FILES_DIR_PATH)/etc/emissary_firmware"
|
|
echo "OPENWRT_PROFILE=$(OPENWRT_PROFILE)" >> "$(IMAGEBUILDER_CUSTOM_FILES_DIR_PATH)/etc/emissary_firmware"
|
|
|
|
rm -rf files/*
|
|
$(MAKE) $(BASE_INSTALL) $(ADDITIONAL_INSTALL)
|
|
|
|
cp -rf files/* $(IMAGEBUILDER_CUSTOM_FILES_DIR_PATH)/
|
|
|
|
flash:
|
|
OPENWRT_DEVICE=$(OPENWRT_DEVICE) OPENWRT_PROFILE=$(OPENWRT_PROFILE) OPENWRT_VERSION=$(OPENWRT_VERSION) misc/script/flash.sh
|
|
|
|
restore:
|
|
OPENWRT_DEVICE=$(OPENWRT_DEVICE) BACKUP_DATE=$(BACKUP_DATE) misc/script/restore.sh
|
|
|
|
gitea-release: tools/gitea-release/bin/gitea-release.sh
|
|
mkdir -p .gitea-release
|
|
rm -rf .gitea-release/*
|
|
|
|
find bin \
|
|
\( -name '*.img.gz' \
|
|
-or -name '*.bin' \
|
|
-or -name '*.img' \
|
|
\) -exec cp {} .gitea-release/ \;
|
|
|
|
GITEA_RELEASE_PROJECT="emissary-firmware" \
|
|
GITEA_RELEASE_ORG="arcad" \
|
|
GITEA_RELEASE_BASE_URL="https://forge.cadoles.com" \
|
|
GITEA_RELEASE_VERSION="$(FULL_VERSION)" \
|
|
GITEA_RELEASE_NAME="$(FULL_VERSION)" \
|
|
GITEA_RELEASE_COMMITISH_TARGET="$(GIT_VERSION)" \
|
|
GITEA_RELEASE_IS_DRAFT="false" \
|
|
GITEA_RELEASE_BODY="With Emissary $(EMISSARY_RELEASE)" \
|
|
GITEA_RELEASE_ATTACHMENTS="$$(find .gitea-release/* -type f)" \
|
|
tools/gitea-release/bin/gitea-release.sh
|
|
|
|
.PHONY: download-emissary-release
|
|
download-emissary-release: tools/gitea-download/bin/gitea-download.sh
|
|
rm -rf gitea-dl
|
|
GITEA_DOWNLOAD_PROJECT="emissary" \
|
|
GITEA_DOWNLOAD_ORG="arcad" \
|
|
GITEA_DOWNLOAD_BASE_URL="https://forge.cadoles.com" \
|
|
GITEA_DOWNLOAD_RELEASE_NAME="$(EMISSARY_RELEASE)" \
|
|
GITEA_DOWNLOAD_ATTACHMENTS_FILTER="\.tar\.gz$$" \
|
|
tools/gitea-download/bin/gitea-download.sh
|
|
|
|
tools/gitea-release/bin/gitea-release.sh:
|
|
mkdir -p tools/gitea-release/bin
|
|
curl --output tools/gitea-release/bin/gitea-release.sh https://forge.cadoles.com/Cadoles/Jenkins/raw/branch/master/resources/com/cadoles/gitea/gitea-release.sh
|
|
chmod +x tools/gitea-release/bin/gitea-release.sh
|
|
|
|
tools/gitea-download/bin/gitea-download.sh:
|
|
mkdir -p tools/gitea-download/bin
|
|
curl --output tools/gitea-download/bin/gitea-download.sh https://forge.cadoles.com/Cadoles/Jenkins/raw/branch/master/resources/com/cadoles/gitea/gitea-download.sh
|
|
chmod +x tools/gitea-download/bin/gitea-download.sh
|
|
|
|
tools/yq/bin/yq:
|
|
mkdir -p tools/yq/bin
|
|
curl -L --output tools/yq/bin/yq https://github.com/mikefarah/yq/releases/download/v4.31.1/yq_linux_amd64
|
|
chmod +x tools/yq/bin/yq
|
|
|
|
UPX_VERSION := 4.0.2
|
|
|
|
tools/upx/bin/upx:
|
|
mkdir -p tools/upx/bin
|
|
curl -L --output tools/upx/upx-$(UPX_VERSION)-amd64_linux.tar.xz https://github.com/upx/upx/releases/download/v$(UPX_VERSION)/upx-$(UPX_VERSION)-amd64_linux.tar.xz
|
|
cd tools/upx && tar -xJf upx-$(UPX_VERSION)-amd64_linux.tar.xz && wait $$!
|
|
$(SHELL) -c 'ln -s $$(readlink -f tools/upx/upx-$(UPX_VERSION)-amd64_linux/upx) tools/upx/bin/upx'
|