chore(all): update to 0.5.1

This commit is contained in:
砼砼 2021-08-13 22:36:17 +08:00
parent a41a1039e9
commit 148abeb728
No known key found for this signature in database
GPG Key ID: 3FDE30A50EA2CCEA
6 changed files with 315 additions and 83 deletions

View File

@ -20,17 +20,17 @@
# 如何使用?
1. (在宿主机中) 复制`user_config.simple.json`为`user_config.json`
1. (在宿主机中) 调整`Makefile`文件配置的配置项 `TARGET_PLATFORM` (默认: apollolake) 和 `TARGET_VERSION` (默认: 7.0 - 将会构建 7.0-41890)
1. (在宿主机中) 构建编译镜像: `make build_image`
1. (在宿主机中) 启动容器构建引导: `make build_boot`
1. 复制`user_config.simple.json`为`user_config.json`
1. 为你想要的平台和版本构建编译镜像:
比如 `redpill_tool_chain.sh build apollolake-7.0-41890`
1. 为你想要的平台和版本构建引导:
比如 `redpill_tool_chain.sh img apollolake-7.0-41890`
`make build_boot`运行结束之后,将会在宿主机的`./image`文件夹中生成 RedPill引导镜像。
`redpill_tool_chain.sh img`运行结束之后,将会在宿主机的`./image`文件夹中生成 RedPill引导镜像。
依赖: `make` 和 `docker`
依赖: `docker`
# 其他说明
为了方便我自己
- `docker/Dockerfile` 中补入了阿里云镜像
- 如果是网络不好可以在`make build_image`之前执行`make build_download`
- `make run_container`自定义引导构建过程
- `redpill_tool_chain.sh run <platform_version>`自定义引导构建过程

View File

@ -2,36 +2,26 @@
[中文说明](README.md "English")
THX @haydibe
# Inofficial redpill toolchain image builder
- Creates a OCI Container (~= Docker) image based tool chain.
- Takes care of downloading (and caching) the required sources to compile redpill.ko and the required os packages that the build process depends on.
- Caches .pat downloads inside the container on the host.
# What is this?
## Changes
- Migrated from Make to Bash (requires `jq`, instead of `make` now )
- Removed Synology toolchain, the tool chain now consists of debian packages
- Configuration is now done in the JSON file `global_config.json`
- The configuration allows to specify own configurations -> just copy a block underneath the `building_configs` block and make sure it has a unique value for the id attribute. The id is used what actualy is used to determine the <platform_version>.
The redpill tool chain docker image builder is updated to v0.4:
## Usage
- proper DSM7 support for apollolake (thnx @jumkey)
- switched from kernel sources based build to toolkit dev based builds for DSM6.2.4 and DSM7.0 (thnx @jumkey)
- make targets for bromolow and apollolake merged: platform and version must be configure in the Makefile now
- image is ~720-780MB instead of ~1.200-1.500MB now
1. Create `user_config.json` according https://github.com/RedPill-TTG/redpill-load
2. Build the image for the platform and version you want:
`redpill_tool_chain.sh build <platform_version>`
3. Run the image for the platform and version you want:
`redpill_tool_chain.sh run <platform_version>`
4. Inside the container, run `make build_all` to build the loader for the platform_version
> PS: since toolkit dev lacks the required sources for fs/proc, they are taken from the extracted DSM6.2.4 kernel sources.
The build requires the sources for this single folder, but does not use the kernel source to build the redpill.ko module.
Note: run `redpill_tool_chain.sh build` to get the list of supported <platform_version>
If you see something is wrong in how the toolchain is build or have ideas how to make it better: please let me know.
For every other problem: please address it to the community - I don't know more than others do.
> PS2: before someone asks: I haven't managed a successfull installation/migration with the created bootloader so far. I am testing exclusivly on ESXi 6.7. The migration always stops at 56% and bails out with error 13.
# How to use it?
1. (on host) configure the Makefile and configure TARGET_PLATFORM (default: bromolow) and TARGET_VERSION (default: 6.2 - will build 6.2.4)
1. (on host) create your own user_config.json or edit the USERCONFIG_* variables in the Makefile
1. (on host) build image: make build_image
1. (on host) build boot image: make build_boot
After running `make build_boot` the created redpill bootloader image will be present in the ./image folder on the host.
Tested with hosts: Ubuntu 18.04 VM, Ubuntu 20.04 WSL2 and XPE (the make binary to build on Synology/XPE can be found here)
Dependencies: make and docker
After set 4. the redpill load image should be build and can be found in the host folder "images".

View File

@ -1,12 +1,9 @@
ARG DOCKER_BASE_IMAGE=debian:8
ARG DOCKER_BASE_IMAGE=ubuntu:20.04
# extract kernel and toolkit dev
FROM ${DOCKER_BASE_IMAGE} AS extract
ARG TOOLKIT_DEV_FILENAME
ADD downloads/${TOOLKIT_DEV_FILENAME} /
ARG KERNEL_FILENAME
ADD downloads/${KERNEL_FILENAME} /
ARG KERNEL_SRC_FILENAME
ADD downloads/${KERNEL_SRC_FILENAME} /
# tool chain image
FROM ${DOCKER_BASE_IMAGE}
@ -16,42 +13,53 @@ RUN cp /etc/apt/sources.list /etc/apt/sources.list.bak && \
sed -i "s/archive.ubuntu.com/mirrors.aliyun.com/g" /etc/apt/sources.list && \
sed -i "s/security.ubuntu.com/mirrors.aliyun.com/g" /etc/apt/sources.list && \
apt-get update && \
apt-get install --yes --no-install-recommends ca-certificates build-essential git libssl-dev curl cpio bspatch vim gettext bc bison flex dosfstools kmod bsdiff patch jq xz-utils && \
apt-get install --yes --no-install-recommends ca-certificates build-essential git libssl-dev curl cpio bspatch vim gettext bc bison flex dosfstools kmod jq && \
rm -rf /var/lib/apt/lists/* /tmp/*
ARG TOOLCHAIN_FILENAME
ADD downloads/${TOOLCHAIN_FILENAME} /opt/
ARG REDPILL_LKM_REPO=https://github.com/RedPill-TTG/redpill-lkm.git
ARG REDPILL_LKM_BRANCH=master
RUN git clone --depth 1 ${REDPILL_LKM_REPO} -b ${REDPILL_LKM_BRANCH} /opt/redpill-lkm
ARG REDPILL_LKM_SRC=/opt/redpill-lkm
ARG REDPILL_LOAD=https://github.com/RedPill-TTG/redpill-load.git
ARG REDPILL_LOAD_REPO=https://github.com/RedPill-TTG/redpill-load.git
ARG REDPILL_LOAD_BRANCH=master
RUN git clone --depth 1 ${REDPILL_LOAD} -b ${REDPILL_LOAD_BRANCH} /opt/redpill-load
ARG REDPILL_LOAD_SRC=/opt/redpill-load
RUN git clone --depth 1 ${REDPILL_LKM_REPO} -b ${REDPILL_LKM_BRANCH} ${REDPILL_LKM_SRC} && \
git clone --depth 1 ${REDPILL_LOAD_REPO} -b ${REDPILL_LOAD_BRANCH} ${REDPILL_LOAD_SRC}
ARG TARGET_VERSION
ARG TARGET_PLATFORM
COPY --from=extract /usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/lib/modules/DSM-${TARGET_VERSION}/build /opt/redpill-lkm/kernel-${TARGET_PLATFORM}-${TARGET_VERSION}
COPY --from=extract /linux*/fs/proc/ /opt/redpill-lkm/kernel-${TARGET_PLATFORM}-${TARGET_VERSION}/fs/proc/
ARG TARGET_VERSION
ARG DSM_VERSION
ARG COMPILE_WITH
ARG TARGET_REVISION
ENV ARCH=x86_64 \
LINUX_SRC=${REDPILL_LKM_SRC}/${COMPILE_WITH}-${TARGET_PLATFORM}-${TARGET_VERSION}-${TARGET_REVISION} \
REDPILL_LKM_SRC=${REDPILL_LKM_SRC} \
REDPILL_LOAD_SRC=${REDPILL_LOAD_SRC} \
TARGET_PLATFORM=${TARGET_PLATFORM} \
TARGET_VERSION=${TARGET_VERSION} \
TARGET_REVISION=${TARGET_REVISION}
ARG EXTRACTED_KSRC
COPY --from=extract ${EXTRACTED_KSRC} ${LINUX_SRC}
RUN if [ "apollolake" = "$TARGET_PLATFORM" ]; then echo '+' > ${LINUX_SRC}/.scmversion; fi && \
if [ "$COMPILE_WITH" = "kernel" ]; then \
cp ${LINUX_SRC}/synoconfigs/${TARGET_PLATFORM} ${LINUX_SRC}/.config && \
make -C ${LINUX_SRC} oldconfig && \
make -C ${LINUX_SRC} modules_prepare ;\
fi
WORKDIR "/opt"
COPY Makefile user_config.json.template /opt/
ARG BUILD_REDPILL_LOADER_VERSION
ARG USERCONFIG_VID=<fill me>
ARG USERCONFIG_PID=<fill me>
ARG USERCONFIG_SN=<fill me>
ARG USERCONFIG_MAC1=<fill me>
# LINUX_SRC=/usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/lib/modules/DSM-${TARGET_VERSION}/build \
ENV ARCH=x86_64 \
CROSS_COMPILE=/opt/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu- \
LINUX_SRC=/opt/redpill-lkm/kernel-${TARGET_PLATFORM}-${TARGET_VERSION} \
TARGET_PLATFORM=${TARGET_PLATFORM} \
BUILD_REDPILL_LOADER_VERSION=${BUILD_REDPILL_LOADER_VERSION} \
USERCONFIG_VID=${USERCONFIG_VID} \
ENV USERCONFIG_VID=${USERCONFIG_VID} \
USERCONFIG_PID=${USERCONFIG_PID} \
USERCONFIG_SN=${USERCONFIG_SN} \
USERCONFIG_MAC1=${USERCONFIG_MAC1}

View File

@ -5,10 +5,12 @@ SHELL := bash
.DELETE_ON_ERROR:
.SUFFIXES:
export REDPILL_SRC := /opt/redpill-lkm
export REDPILL_LOADER_SRC := /opt/redpill-load
export REDPILL_LKM_SRC := ${REDPILL_LKM_SRC}
export REDPILL_LOAD_SRC := ${REDPILL_LOAD_SRC}
export TARGET_PLATFORM :=${TARGET_PLATFORM}
export TARGET_PLATFORM := ${TARGET_PLATFORM}
export TARGET_VERSION := ${TARGET_VERSION}
export TARGET_REVISION := ${TARGET_REVISION}
export LINUX_SRC := ${LINUX_SRC}
export USERCONFIG_VID := ${USERCONFIG_VID}
@ -16,43 +18,41 @@ export USERCONFIG_PID := ${USERCONFIG_PID}
export USERCONFIG_SN := ${USERCONFIG_SN}
export USERCONFIG_MAC1 := ${USERCONFIG_MAC1}
export BUILD_REDPILL_LOADER_VERSION := ${BUILD_REDPILL_LOADER_VERSION}
.PHONY: all
all:
@echo "Possible Targets:"
@cat Makefile |grep .PHONY[:] |cut -f2 -d ' ' |xargs -n1 echo " - " |grep -v " - all"
@less Makefile |grep .PHONY[:] |cut -f2 -d ' ' |xargs -n1 echo " - " |grep -v " - all"
.PHONY: build_redpill_lkm
build_redpill_lkm:
@$(MAKE) -C $(REDPILL_SRC) LINUX_SRC=$(LINUX_SRC) && \
@$(MAKE) -C $(REDPILL_LKM_SRC) LINUX_SRC=$(LINUX_SRC) && \
echo "#############################################" && \
modinfo $(REDPILL_SRC)/redpill.ko
modinfo $(REDPILL_LKM_SRC)/redpill.ko
.PHONY: build_redpill_load
build_redpill_load:
@mkdir -p $(REDPILL_LOADER_SRC)/ext/rp-lkm/
@if [ ! -e $(REDPILL_LOADER_SRC)/user_config.json ]; then envsubst < user_config.json.template > $(REDPILL_LOADER_SRC)/user_config.json; fi
@mkdir -p $(REDPILL_LOAD_SRC)/ext/rp-lkm/
@if [ ! -e $(REDPILL_LOAD_SRC)/user_config.json ]; then envsubst < user_config.json.template > $(REDPILL_LOAD_SRC)/user_config.json; fi
@echo "#############################################" && \
echo "Using user_config.json:" && cat $(REDPILL_LOADER_SRC)/user_config.json && \
echo "Using user_config.json:" && cat $(REDPILL_LOAD_SRC)/user_config.json && \
echo "#############################################"
@if [ "$(TARGET_PLATFORM)" == "bromolow" ]; then \
pushd $(REDPILL_LOADER_SRC) && \
if [ "$(BUILD_REDPILL_LOADER_VERSION)" == "7.0-41890" ];then \
cp -f $(REDPILL_SRC)/redpill.ko $(REDPILL_LOADER_SRC)/ext/rp-lkm/redpill-linux-v3.10.108.ko ; \
pushd $(REDPILL_LOAD_SRC) && \
if [ "$(TARGET_VERSION)-$(TARGET_REVISION)" == "7.0-41222" ];then \
cp -f $(REDPILL_LKM_SRC)/redpill.ko $(REDPILL_LOAD_SRC)/ext/rp-lkm/redpill-linux-v3.10.108.ko ; \
else \
cp -f $(REDPILL_SRC)/redpill.ko $(REDPILL_LOADER_SRC)/ext/rp-lkm/redpill-linux-v3.10.105.ko ; \
cp -f $(REDPILL_LKM_SRC)/redpill.ko $(REDPILL_LOAD_SRC)/ext/rp-lkm/redpill-linux-v3.10.105.ko ; \
fi && \
./build-loader.sh 'DS3615xs' '$(BUILD_REDPILL_LOADER_VERSION)'; \
./build-loader.sh 'DS3615xs' '$(TARGET_VERSION)-$(TARGET_REVISION)'; \
fi
@if [ "$(TARGET_PLATFORM)" == "apollolake" ]; then \
pushd $(REDPILL_LOADER_SRC) && \
if [ "$(BUILD_REDPILL_LOADER_VERSION)" == "7.0-41890" ];then \
cp -f $(REDPILL_SRC)/redpill.ko $(REDPILL_LOADER_SRC)/ext/rp-lkm/redpill-linux-v4.4.180+.ko; \
pushd $(REDPILL_LOAD_SRC) && \
if [ "$(TARGET_VERSION)-$(TARGET_REVISION)" == "7.0-41890" ];then \
cp -f $(REDPILL_LKM_SRC)/redpill.ko $(REDPILL_LOAD_SRC)/ext/rp-lkm/redpill-linux-v4.4.180+.ko; \
else \
cp -f $(REDPILL_SRC)/redpill.ko $(REDPILL_LOADER_SRC)/ext/rp-lkm/redpill-linux-v4.4.59+.ko; \
cp -f $(REDPILL_LKM_SRC)/redpill.ko $(REDPILL_LOAD_SRC)/ext/rp-lkm/redpill-linux-v4.4.59+.ko; \
fi && \
./build-loader.sh 'DS918+' '$(BUILD_REDPILL_LOADER_VERSION)'; \
./build-loader.sh 'DS918+' '$(TARGET_VERSION)-$(TARGET_REVISION)'; \
fi
.PHONY: build_all
@ -60,4 +60,4 @@ build_all: build_redpill_lkm build_redpill_load
.PHONY: clean_redpill_lkm
clean_redpill_lkm:
@$(MAKE) -C $(REDPILL_SRC) clean
@$(MAKE) -C $(REDPILL_LKM_SRC) clean

81
global_config.json Normal file
View File

@ -0,0 +1,81 @@
{
"docker": {
"use_buildkit": "true",
"image_name": "redpill-tool-chain",
"download_folder": "docker/downloads"
},
"build_configs": [
{
"id": "bromolow-6.2.4-25556",
"platform_version": "bromolow-6.2.4-25556",
"docker_base_image": "debian:8-slim",
"compile_with": "kernel",
"download_urls": {
"kernel": "https://sourceforge.net/projects/dsgpl/files/Synology%20NAS%20GPL%20Source/25426branch/bromolow-source/linux-3.10.x.txz/download",
"toolkit_dev": "https://sourceforge.net/projects/dsgpl/files/toolkit/DSM6.2/ds.bromolow-6.2.dev.txz/download"
},
"redpill_lkm": {
"source_url": "https://github.com/RedPill-TTG/redpill-lkm.git",
"branch": "master"
},
"redpill_load": {
"source_url": "https://github.com/RedPill-TTG/redpill-load.git",
"branch": "master"
}
},
{
"id": "bromolow-7.0-41222",
"platform_version": "bromolow-7.0-41222",
"docker_base_image": "debian:8-slim",
"compile_with": "toolkit_dev",
"download_urls": {
"kernel": "https://sourceforge.net/projects/dsgpl/files/Synology%20NAS%20GPL%20Source/25426branch/bromolow-source/linux-3.10.x.txz/download",
"toolkit_dev": "https://sourceforge.net/projects/dsgpl/files/toolkit/DSM7.0/ds.bromolow-7.0.dev.txz/download"
},
"redpill_lkm": {
"source_url": "https://github.com/RedPill-TTG/redpill-lkm.git",
"branch": "master"
},
"redpill_load": {
"source_url": "https://github.com/RedPill-TTG/redpill-load.git",
"branch": "master"
}
},
{
"id": "apollolake-6.2.4-25556",
"platform_version": "apollolake-6.2.4-25556",
"docker_base_image": "debian:8-slim",
"compile_with": "kernel",
"download_urls": {
"kernel": "https://sourceforge.net/projects/dsgpl/files/Synology%20NAS%20GPL%20Source/25426branch/apollolake-source/linux-4.4.x.txz/download",
"toolkit_dev": "https://sourceforge.net/projects/dsgpl/files/toolkit/DSM6.2/ds.apollolake-6.2.dev.txz/download"
},
"redpill_lkm": {
"source_url": "https://github.com/RedPill-TTG/redpill-lkm.git",
"branch": "master"
},
"redpill_load": {
"source_url": "https://github.com/RedPill-TTG/redpill-load.git",
"branch": "master"
}
},
{
"id": "apollolake-7.0-41890",
"platform_version": "apollolake-7.0-41890",
"docker_base_image": "debian:10-slim",
"compile_with": "toolkit_dev",
"download_urls": {
"kernel": "https://sourceforge.net/projects/dsgpl/files/Synology%20NAS%20GPL%20Source/25426branch/apollolake-source/linux-4.4.x.txz/download",
"toolkit_dev": "https://sourceforge.net/projects/dsgpl/files/toolkit/DSM7.0/ds.apollolake-7.0.dev.txz/download"
},
"redpill_lkm": {
"source_url": "https://github.com/RedPill-TTG/redpill-lkm.git",
"branch": "master"
},
"redpill_load": {
"source_url": "https://github.com/jumkey/redpill-load.git",
"branch": "7.0-41890"
}
}
]
}

153
redpill_tool_chain.sh Executable file
View File

@ -0,0 +1,153 @@
##!/usr/bin/env bash
set -eu
USERCONFIG_VID=changeme
USERCONFIG_PID=changeme
USERCONFIG_SN=changeme
USERCONFIG_MAC1=changeme
function readConfig() {
cat global_config.json
}
function getValueByJsonPath(){
local JSONPATH=${1}
local CONFIG=${2}
jq -r "${JSONPATH}" <<<${CONFIG}
}
function buildImage(){
[ "${USE_BUILDKIT}" == "true" ] && export DOCKER_BUILDKIT=1
docker build --file docker/Dockerfile --force-rm --pull \
--build-arg DOCKER_BASE_IMAGE="${DOCKER_BASE_IMAGE}" \
--build-arg COMPILE_WITH="${COMPILE_WITH}" \
--build-arg EXTRACTED_KSRC="${EXTRACTED_KSRC}" \
--build-arg KERNEL_SRC_FILENAME="$( [ "${COMPILE_WITH}" == "kernel" ] && echo "${KERNEL_FILENAME}" || echo "${TOOLKIT_DEV_FILENAME}")" \
--build-arg REDPILL_LKM_REPO="${REDPILL_LKM_REPO}" \
--build-arg REDPILL_LKM_BRANCH="${REDPILL_LKM_BRANCH}" \
--build-arg REDPILL_LOAD_REPO="${REDPILL_LOAD_REPO}" \
--build-arg REDPILL_LOAD_BRANCH="${REDPILL_LOAD_BRANCH}" \
--build-arg TARGET_PLATFORM="${TARGET_PLATFORM}" \
--build-arg TARGET_VERSION="${TARGET_VERSION}" \
--build-arg DSM_VERSION="${DSM_VERSION}" \
--build-arg TARGET_REVISION="${TARGET_REVISION}" \
--build-arg USERCONFIG_VID="${USERCONFIG_VID}" \
--build-arg USERCONFIG_PID="${USERCONFIG_PID}" \
--build-arg USERCONFIG_SN="${USERCONFIG_SN}" \
--build-arg USERCONFIG_MAC1="${USERCONFIG_MAC1}" \
-t ${DOCKER_IMAGE_NAME}:${TARGET_PLATFORM}-${TARGET_VERSION}-${TARGET_REVISION} ./docker
}
function runContainer(){
config=$( [ -e user_config.json ] && echo "-v ${PWD}/user_config.json:/opt/redpill-load/user_config.json")
final_cmd="docker run -ti --rm --privileged -v /dev:/dev \
-v ${REDPILL_LOAD_CACHE}:/opt/redpill-load/cache \
-v ${REDPILL_LOAD_IMAGES}:/opt/redpill-load/images \
$config \
-e USERCONFIG_VID="${USERCONFIG_VID}" \
-e USERCONFIG_PID="${USERCONFIG_PID}" \
-e USERCONFIG_SN="${USERCONFIG_SN}" \
-e USERCONFIG_MAC1="${USERCONFIG_MAC1}" \
-e TARGET_PLATFORM="${TARGET_PLATFORM}" \
-e TARGET_VERSION="${TARGET_VERSION}" \
-e DSM_VERSION="${DSM_VERSION}" \
-e REVISION="${TARGET_REVISION}" \
${DOCKER_IMAGE_NAME}:${TARGET_PLATFORM}-${TARGET_VERSION}-${TARGET_REVISION} bash $@"
eval ${final_cmd}
}
function downloadFromUrlIfNotExists(){
local DOWNLOAD_URL="${1}"
local OUT_FILE="${2}"
local MSG="${3}"
if [ ! -e ${OUT_FILE} ]; then
echo "Downloading ${MSG}"
curl --progress-bar --location ${DOWNLOAD_URL} --output ${OUT_FILE}
fi
}
function showHelp(){
cat << EOF
Usage: ${0} <action> <platform version>
Actions: build run img debug
Available platform versions:
---------------------
${AVAILABLE_IDS}
EOF
}
# mount-bind host folder with absolute path into redpill-load cache folder
# will not work with relativfe path! If single name is used, a docker volume will be created!
REDPILL_LOAD_CACHE=${PWD}/cache
# mount bind hots folder with absolute path into redpill load images folder
REDPILL_LOAD_IMAGES=${PWD}/images
####################################################
# Do not touch anything below, unless you know what you are doing...
####################################################
# parse paramters from config
CONFIG=$(readConfig)
AVAILABLE_IDS=$(getValueByJsonPath ".build_configs[].id" "${CONFIG}")
if [ $# -lt 2 ]; then
showHelp
exit 1
fi
ACTION=${1}
ID=${2}
BUILD_CONFIG=$(getValueByJsonPath ".build_configs[] | select(.id==\"${ID}\")" "${CONFIG}")
if [ -z "${BUILD_CONFIG}" ];then
echo "Error: Platform version ${ID} not specified in global_config.json"
echo
showHelp
exit 1
fi
USE_BUILDKIT=$(getValueByJsonPath ".docker.use_buildkit" "${CONFIG}")
DOCKER_IMAGE_NAME=$(getValueByJsonPath ".docker.image_name" "${CONFIG}")
DOWNLOAD_FOLDER=$(getValueByJsonPath ".docker.download_folder" "${CONFIG}")
TARGET_PLATFORM=$(getValueByJsonPath ".platform_version | split(\"-\")[0]" "${BUILD_CONFIG}")
TARGET_VERSION=$(getValueByJsonPath ".platform_version | split(\"-\")[1]" "${BUILD_CONFIG}")
DSM_VERSION=$(getValueByJsonPath ".platform_version | split(\"-\")[1][0:3]" "${BUILD_CONFIG}")
TARGET_REVISION=$(getValueByJsonPath ".platform_version | split(\"-\")[2]" "${BUILD_CONFIG}")
DOCKER_BASE_IMAGE=$(getValueByJsonPath ".docker_base_image" "${BUILD_CONFIG}")
KERNEL_DOWNLOAD_URL=$(getValueByJsonPath ".download_urls.kernel" "${BUILD_CONFIG}")
COMPILE_WITH=$(getValueByJsonPath ".compile_with" "${BUILD_CONFIG}")
KERNEL_FILENAME=$(getValueByJsonPath ".download_urls.kernel | split(\"/\")[] | select ( . | endswith(\".txz\"))" "${BUILD_CONFIG}")
TOOLKIT_DEV_DOWNLOAD_URL=$(getValueByJsonPath ".download_urls.toolkit_dev" "${BUILD_CONFIG}")
TOOLKIT_DEV_FILENAME=$(getValueByJsonPath ".download_urls.toolkit_dev | split(\"/\")[] | select ( . | endswith(\".txz\"))" "${BUILD_CONFIG}")
REDPILL_LKM_REPO=$(getValueByJsonPath ".redpill_lkm.source_url" "${BUILD_CONFIG}")
REDPILL_LKM_BRANCH=$(getValueByJsonPath ".redpill_lkm.branch" "${BUILD_CONFIG}")
REDPILL_LOAD_REPO=$(getValueByJsonPath ".redpill_load.source_url" "${BUILD_CONFIG}")
REDPILL_LOAD_BRANCH=$(getValueByJsonPath ".redpill_load.branch" "${BUILD_CONFIG}")
EXTRACTED_KSRC='/linux*'
if [ "${COMPILE_WITH}" == "toolkit_dev" ]; then
EXTRACTED_KSRC="/usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/lib/modules/DSM-${DSM_VERSION}/build/"
fi
case "${ACTION}" in
build) downloadFromUrlIfNotExists "${KERNEL_DOWNLOAD_URL}" "${DOWNLOAD_FOLDER}/${KERNEL_FILENAME}" "Kernel"
downloadFromUrlIfNotExists "${TOOLKIT_DEV_DOWNLOAD_URL}" "${DOWNLOAD_FOLDER}/${TOOLKIT_DEV_FILENAME}" "Toolkit Dev"
buildImage
;;
img) runContainer -c "'make build_all'"
;;
debug) runContainer -c "'BRP_DEBUG=1 make build_all'"
;;
run) runContainer
;;
*) if [ ! -z ${ACTION} ];then
echo "Error: action ${ACTION} does not exist"
echo ""
fi
showHelp
exit 1
;;
esac