tImplement Dockerfile parsing through blends. - arm-sdk - os build toolkit for various embedded devices
HTML git clone https://git.parazyd.org/arm-sdk
DIR Log
DIR Files
DIR Refs
DIR Submodules
DIR README
DIR LICENSE
---
DIR commit 9455ee1b949d32758cab5bdf217201c594b7097b
DIR parent 8f1714b3dba553b487fe1c6dac9c925dc0b11291
HTML Author: parazyd <parazyd@dyne.org>
Date: Tue, 18 Sep 2018 15:31:49 +0200
Implement Dockerfile parsing through blends.
This also updates libdevuansdk, which now contains a Dockerfile parsing
ttool called "dockerfile_parse.py".
Diffstat:
M sdk | 52 ++++++++++++++++++++++++-------
1 file changed, 40 insertions(+), 12 deletions(-)
---
DIR diff --git a/sdk b/sdk
t@@ -1,5 +1,5 @@
#!/usr/bin/env zsh
-# Copyright (c) 2016-2017 Dyne.org Foundation
+# Copyright (c) 2016-2018 Dyne.org Foundation
# arm-sdk is written and maintained by Ivan J. <parazyd@dyne.org>
#
# This file is part of arm-sdk
t@@ -94,29 +94,57 @@ load() {
)
boardlib="${board_map[$dev]}"
+ [[ -f $boardlib ]] || { die "no valid boards specified"; exit 1 }
+ source $boardlib ## XXX: remove this line
+
oslib="${os_map[$os]}"
+ [[ -f $oslib ]] || { die "no valid distro specified"; exit 1 }
+ source $oslib
+
blendlib="${blend_map[$blend]}"
- [[ $blendlib =~ '^http' ]] && {
+ if [[ "$blendlib" =~ '^http' ]]; then
notice "grabbing blend from the internetz"
- pushd $R/extra/blends
- curl -Ls -O $blendlib
- popd
+ wget -O "$R/extra/blends/$(basename $blendlib)" "$blendlib"
blendlib="$R/extra/blends/$(basename $blendlib)"
- }
+ fi
- [[ -f $boardlib ]] || { die "no valid boards specified"; exit 1 }
- [[ -f $oslib ]] || { die "no valid distro specified"; exit 1 }
- [[ -f $blendlib ]] || { act "no blend specified" }
+ if [[ -z "$blendlib" ]]; then
+ notice "trying to parse an unknown blend"
+ # Check if it's a Dockerfile
+ if grep -qi '^FROM ' "$blend"; then
+ act "The blend is a Dockerfile"
+ parsedfile="$($LIBPATH/extra/dockerfile_parse.py "$blend")"
+ [[ $? = 0 ]] || { die "Could not parse the Dockerfile" ; exit 1}
+ cat > "$R/$(basename ${blend}).blend" << __EOF__
+#!/usr/bin/env zsh
+# Parsed with dockerfile_parse.py
+#
+blend_postinst() {
+ fn blend_postinst
+ req=(strapdir blend)
+ ckreq || return 1
- source $boardlib ## XXX: remove this line
- source $oslib
+ notice "executing blend postinst"
+ cat << ___EOF___ | sudo tee \$strapdir/blendpostinst
+${parsedfile}
+___EOF___
+
+ chroot-script -d blendpostinst || zerr
+}
+__EOF__
+ blendlib="$R/$(basename ${blend}).blend"
+ fi
+ fi
+
+ [[ -f $blendlib ]] || { act "no blend specified" }
source $boardlib && act "$device_name build script loaded"
+
source $R/lib/overrides
[[ -f $blendlib ]] && {
source $blendlib || zerr
- act "$blend blend loaded"
+ act "$(basename $blend) blend loaded"
export BLEND=1
}