################################################################################
################################################################################
Now with support for RedPill extensions using the ext
action.
See section Changelog for changes!
*** Please do not ask to add <platform_version> with configurations for other
redpill-load repositories, please add them to your own user_config.json
***
-
Creates a OCI Container (~= Docker) image based toolchain
-
Caching of downloaded build components:
- Takes care of downloading (and caching) the required sources to compile redpill-lkm.ko and the required OS packages that the build process depends on
- Performs integrity check of kernel/toolkit-dev version required to build redpill-lkm
- Caches .pat downloads from inside the container on the host
-
Flexible configuration:
-
Configuration is done in the JSON file
global_config.json
; custom <platform_version> entries can be added underneath thebuild_configs
block. Make sure theid
is unique per block and does not use a space, single quote or double quote character or any odd special character, as it might break the the script! You can add the same <platform_version> multiple times with differentid
values that point to differentuser_config.json
(used by redpill-load) -
The default
global_config.json
contains platform versions supported by the official redpill-load repository. Please create new <platform_version> and point it to custom repositories if needed -
Supports overriding settings from
global_config.json
in a user specificcustom_config.json
. The file must be created manually and supports all fields thatglobal_config.json
has. If thecustom_config.json
exists, the configurations are merged. Values from thecustom_config.json
always override the values in theglobal_config.json
NB. Entries in the
"build_configs":
array must be complete (not just single keys and their values) and are matched byid
. Thedocker
element must exist, and has a different behaviour tobuild_configs
entries, as only the values you want to override need to be declared in thecustom_config.json
-
Supports binding a local redpill-lkm folder into the container
Set:
"docker.local_rp_lkm_use": "true"
and
"docker.local_rp_lkm_path": "path/to/rp-lkm"
If set to "true" the auto action will not pull the latest redpill-lkm sources!
-
Supports binding a local redpill-load folder into the container
Set:
"docker.local_rp_load_use": "true"
and
"docker.local_rp_load_path": "path/to/rp-load"
If set to "true" the auto action will not pull latest redpill-load sources!
-
Supports custom mounts
Set:
"docker.use_custom_bind_mounts":
to"true"
and add your custom bind-mounts in
"docker.custom_bind_mounts"
-
Supports use of make target to specify the redpill.ko build configuration
Set <platform_version>.redpill_lkm_make_target to
dev-v6
,dev-v7
,test-v6
,test-v7
,prod-v6
orprod-v7
Make sure to use the -v6 ones on DSM6 build and -v7 on DSM7 build. By default the targets
dev-v6
anddev-v7
are used.- dev: all symbols included, debug messages included
- test: fully stripped with only warning & above (no debugs or info)
- prod: fully stripped with no debug messages
-
-
Cleanup of Docker Images and Build Caches:
-
Supports cleanup of old image versions and the build cache per <platform_version>, or
all
of them at once. -
Supports auto clean of old image versions and the build cache for the current build image
Set:
"docker.auto_clean": "true"
-
Option to configure if the build cache is used or not:
"docker.use_build_cache"
-
Option to specify if "clean all" should delete all or only orphaned images
-
Caches the redpill-load custom folder, including downloaded extensions
-
-
Edit
<platform>_user_config.json
that matches your <build_config_id> according https://github.com/RedPill-TTG/redpill-load and place it in the same folder asrp-helper.sh
-
Build the image for the platform and version you want:
./rp-helper.sh build <build_config_id>
-
Optional: add extensions using the previously built image for a platform and version (Repeat until all required extensions are added):
./rp-helper.sh ext <build_config_id> add <url_of_extension_to_add>
-
Run a container based on the previously built image for the platform and version you want:
./rp-helper.sh auto <build_config_id>
You can also use ./rp-helper.sh run <build_config_id>
to get a bash prompt,
modify whatever you want and execute make -C /opt/ build_all
to build the
boot loader image.
After step 4 the redpill load image should be built and can be found in the host folder "images".
Please do not modify any values in global_config.json
. Instead create and
modify your personal user_config.json
according your needs! This is where
you should add other redpill-load repositories if you wish.
Run ./rp-helper.sh
to get the list of supported ids for the <build_config_id>
parameter (the list will show the merged list of ids of global_config.json
and user_config.json
).
Usage: ./rp-helper.sh [extension manager arguments]
Actions: build, ext, auto, run, clean
-
build: Build the redpill-helper image for the specified build config id
-
ext: Manage extensions within the specified build config id container. The modifications will apply to all build configs!
-
auto: Starts the redpill-helper container using the previously built redpill-helper image for the specified buid config id. Updates redpill sources and builds the bootloader image automaticaly and end the container once done
-
run: Starts the redpill-helper container using the previously built redpill-helper image for the specified build config id with an interactive bash terminal
-
clean: Removes old/dangling images and the build cache for a given build config id. Use
all
as build config id to remove images and build caches for all build configs. NB"docker.clean_images": "all"
only affectsclean all
bromolow-6.2.4-25556 bromolow-7.0-41222 apollolake-6.2.4-25556 apollolake-7.0-41890
NB. these are the platform versions supported by TTG. Others can be added in the
user_config.json
.
For Bromolow 6.2.4 : ./rp-helper.sh build bromolow-6.2.4-25556
For Bromolow 7.0 : ./rp-helper.sh build bromolow-7.0-41222
For Apollolake 6.2.4 : ./rp-helper.sh build apollolake-6.2.4-25556
For Apollolake 7.0 : ./rp-helper.sh build apollolake-7.0-41890
Add extension : ./rp-helper.sh ext <build_config_id> add <extension_url>
Update extension : ./rp-helper.sh ext <build_config_id> update <extension_id>
Remove extension : ./rp-helper.sh ext <build_config_id> remove <extension_id>
Read ext-manager help for further options: ./rp-helper.sh ext <build_config_id>
For Bromolow 6.2.4 : ./rp-helper.sh auto bromolow-6.2.4-25556
For Bromolow 7.0 : ./rp-helper.sh auto bromolow-7.0-41222
For Apollolake 6.2.4 : ./rp-helper.sh auto apollolake-6.2.4-25556
For Apollolake 7.0 : ./rp-helper.sh auto apollolake-7.0-41890
For Bromolow 6.2.4 : ./rp-helper.sh clean bromolow-6.2.4-25556
For Bromolow 7.0 : ./rp-helper.sh clean bromolow-7.0-41222
For Apollolake 6.2.4 : ./rp-helper.sh clean apollolake-6.2.4-25556
For Apollolake 7.0 : ./rp-helper.sh clean apollolake-7.0-41890
For all : ./rp-helper.sh clean all
- Changed name from redpill_tool_chain to rp-helper.
- Added "ext" action to manage redpill extensions.
- Added
custom_config.json
to externalize user specific configuration. The settings override the settings of theglobal_config.json
- Changed the ordering of
"vid":
and"pid":
in the <build_config>_user_profile.json files.
- Added Supports to bind a local redpill-lkm folder into the container
- Added the additionaly required make target when building redpill.ko
- Added a new configuration item in <build_config>.redpill_lkm_make_target to set the build target
- Added sha256 cheksum for kernel and toolkit-dev downloads in
global_config.json
. Breaking Change: the item"download_urls"
is renamed to"downloads"
and has a new structure. Make sure to allign your custom build_config> configurations to the new structure when copying them into theglobal_config.json
. - Check checksum of kernel or toolkit-dev when building the image and fail if checksums missmatch. Will not delete the corrupt file!
- Added
"docker.custom_bind_mounts"
inglobal_config.json
to add as many custom bind-mounts as you want, set"docker.use_custom_bind_mounts":
to"true"
to enable the feature. - Fixed: only download kernel or toolkit-dev required to build the image (always downloaded both before, but only used either one of them when building the image)
- Added simple precondition check to see if required tools are available
- From now on, only the platform version from the official redpill-load
repository are supported. Thus all DSM7.0.1 platform versions are removed
from
global_config.json
.
- Fixed usage of label that determins the redpill-tool-chain images for clean up
- Add
"docker.use_build_cache": "false"
toglobal_config.json
- Add
"docker.clean_images": "all"
toglobal_config.json
- Added
auto_clean
to clean old images and build cache after building the image.
clean
now cleans the build cache as well
- Added DSM 7.0.1 support (from none TTG Repos)
- Addded
clean
to delete old images created with the toolchain image builder 0.7
- Not sure, forget to take notes...
- Not sure, forget to take notes...
- removed
user_config.json.template
, as it was orphaned and people started to use it in an unintended way. - new parameters in
global_config.json
:docker.local_rp_load_use
: wether to mount a local folder with redpill-load into the build container (true/false)docker.local_rp_load_path
: path to the local copy of redpill-load to mount into the build container (absolute or relative path)build_configs[].user_config_json
: allows to define a user_config.json per <build_config>
- Changed redpill-load sources for apollolake-7.0-41890 to https://github.com/RedPill-TTG/redpill-load.git and the master branch.
- Modified the Dockerfile to set mode +x for /entrypoint.sh.
- Added an entrypoint script that updates the redill sources in the container, executes the build and exits the container once finished.
- Added action "auto", which starts the entypoint script. If you are not activly developing on redpill, then this is the action you wil want to use.
- The action "run" retained the old behavior: it skips the entrypoint script and drops you in a bash shell.This action is ment for devs.
- Deaktivated Docker build cache, to prevent changes in the redpill repos stay undetected when building a new image.
- Refactored the in-contaienr Makefile inside to detect the kernel version for redpill-load/ext/rp-lkm/redpill-linux-${KERNELVERSION}.ko from compiled redpill.
- Not sure, forget to take notes...
- Migrated from Make to Bash (requires
jq
, instead ofmake
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 theid
attribute. Theid
is used what actualy is used to determine the <build_config id>.
- It was implemented in
make
before. Forget to take notes.