Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/guysoft/OctoPi.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuy Sheffer <guysoft@gmail.com>2015-03-02 16:36:58 +0300
committerGuy Sheffer <guysoft@gmail.com>2015-03-02 16:36:58 +0300
commitbd870c3a2339d7f8623a524d61e1918e2a5f8593 (patch)
treed8bf1a510124a674d056ea9b8fb0445864eb4548
parentc9bc2ebdd3eba589d9203eb3729272c4235efac7 (diff)
parent7797955900eed9f99bacb298f726e7f32686bf0d (diff)
Merge variantsandflavors from mrbeam
-rwxr-xr-xsrc/build27
-rwxr-xr-xsrc/chroot_script59
-rwxr-xr-xsrc/common.sh49
-rwxr-xr-xsrc/config2
-rwxr-xr-xsrc/octopi46
-rwxr-xr-xsrc/variants/example/chroot_script15
-rwxr-xr-xsrc/variants/example/config9
-rwxr-xr-xsrc/variants/example/config.nightly4
-rw-r--r--src/variants/example/filesystem/root/etc/dhclient.conf0
9 files changed, 154 insertions, 57 deletions
diff --git a/src/build b/src/build
index 05880ff..eaf24f2 100755
--- a/src/build
+++ b/src/build
@@ -1,4 +1,31 @@
#!/usr/bin/env bash
+
+source ./common.sh
+
OCTOPI_PATH=$(dirname $(realpath -s $0))
+
+BUILD_VARIANT=default
+BUILD_FLAVOR=default
+
+if [ "$#" -gt 0 ]; then
+ BUILD_VARIANT=$1
+fi
+if [ "$#" -gt 1 ]; then
+ BUILD_FLAVOR=$2
+fi
+
+if [ $BUILD_VARIANT != 'default' ]; then
+ export VARIANT_BASE="$OCTOPI_PATH/variants/$BUILD_VARIANT"
+ [ -d $VARIANT_BASE ] || die "Could not find Variant $BUILD_VARIANT"
+ if [ $BUILD_FLAVOR == '' ] || [ $BUILD_FLAVOR == 'default' ]; then
+ FLAVOR_CONFIG=$VARIANT_BASE/config
+ else
+ FLAVOR_CONFIG=$VARIANT_BASE/config.$BUILD_FLAVOR
+ fi
+ source $FLAVOR_CONFIG || die "Could not find config file $FLAVOR_CONFIG"
+fi
+
+echo -e "--> Building VARIANT $BUILD_VARIANT, FLAVOR $BUILD_FLAVOR"
+
source $OCTOPI_PATH/config
source $OCTOPI_PATH/octopi
diff --git a/src/chroot_script b/src/chroot_script
index ad807d6..0609764 100755
--- a/src/chroot_script
+++ b/src/chroot_script
@@ -4,40 +4,9 @@ set -x
# Helper script that runs in a Raspbian chroot to create the OctoPI distro
# Written by Guy Sheffer <guysoft at gmail dot com>
# GPL V3
-fixLd(){
- sed -i 's@/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so@\#/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so@' /etc/ld.so.preload
-}
-
-gitclone(){
-if [ $GIT_REPO_OVERRIDE != "" ] ; then
- REPO=$GIT_REPO_OVERRIDE`echo $1 | awk -F '/' '{print $(NF)}'`
- sudo -u pi git clone $REPO
- sudo -u pi git remote set-url $1
-else
- sudo -u pi git clone $1
-fi
-}
-
-unpackHome(){
- shopt -s dotglob
- cp -av /filesystem/home/* /home/pi
- shopt -u dotglob
- chown -hR pi:pi /home/pi
-}
-
-unpackRoot(){
- shopt -s dotglob
- cp -av /filesystem/root/* /
- shopt -u dotglob
-}
-
-unpackBoot(){
- shopt -s dotglob
- cp -av /filesystem/boot/* /boot
- shopt -u dotglob
-}
-
-fixLd
+
+source /common.sh
+
unpackHome
unpackBoot
apt-get update
@@ -52,12 +21,15 @@ pushd /home/pi
#build virtualenv
sudo -u pi virtualenv --system-site-packages oprint
- #OctoPrint
- gitclone https://github.com/foosel/OctoPrint.git
- pushd OctoPrint
- git checkout $OCTOPRINT_BRANCH
- sudo -u pi /home/pi/oprint/bin/python setup.py install
- popd
+ if [ -n $OVERRIDE_OCTOPRINT ]
+ then
+ #OctoPrint
+ gitclone https://github.com/foosel/OctoPrint.git
+ pushd OctoPrint
+ git checkout $OCTOPRINT_BRANCH
+ sudo -u pi /home/pi/oprint/bin/python setup.py install
+ popd
+ fi
#OctoPiPanel
gitclone https://github.com/jonaslorander/OctoPiPanel.git
@@ -136,8 +108,8 @@ echo "pi ALL=NOPASSWD: /sbin/service" > /etc/sudoers.d/octoprint-service
#reach printer by name
sudo apt-get -y --force-yes install avahi-daemon
-echo octopi > /etc/hostname
-sed -i 's@raspberrypi@octopi@' /etc/hosts
+echo "$OVERRIDE_HOSTNAME" > /etc/hostname
+sed -i -e "s@raspberrypi@$OVERRIDE_HOSTNAME@g" /etc/hosts
# enable raspicam
echo "# enable raspicam" >> /boot/config.txt
@@ -151,7 +123,4 @@ unpackRoot
sudo update-rc.d octoprint defaults 99
#cleanup
-fixLd
sudo apt-get clean
-
-sed -i 's@\#/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so@/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so@' /etc/ld.so.preload
diff --git a/src/common.sh b/src/common.sh
new file mode 100755
index 0000000..b388d76
--- /dev/null
+++ b/src/common.sh
@@ -0,0 +1,49 @@
+#!/usr/bin/env bash
+
+function die () {
+ echo >&2 "$@"
+ exit 1
+}
+
+function fixLd(){
+ sed -i 's@/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so@\#/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so@' etc/ld.so.preload
+}
+
+function restoreLd(){
+ sed -i 's@\#/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so@/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so@' etc/ld.so.preload
+}
+
+function gitclone(){
+if [ $GIT_REPO_OVERRIDE != "" ] ; then
+ REPO=$GIT_REPO_OVERRIDE`echo $1 | awk -F '/' '{print $(NF)}'`
+ sudo -u pi git clone $REPO
+ sudo -u pi git remote set-url $1
+else
+ sudo -u pi git clone $1
+fi
+}
+
+function unpackHome(){
+ shopt -s dotglob
+ cp -v -r --preserve=mode,timestamps /filesystem/home/* /home/pi
+ shopt -u dotglob
+ chown -hR pi:pi /home/pi
+}
+
+function unpackRoot(){
+ shopt -s dotglob
+ cp -v -r --preserve=mode,timestamps /filesystem/root/* /
+ shopt -u dotglob
+}
+
+function unpackBoot(){
+ shopt -s dotglob
+ cp -v -r --preserve=mode,timestamps /filesystem/boot/* /boot
+ shopt -u dotglob
+}
+
+function install_fail_on_error_trap() {
+ set -e
+ trap 'previous_command=$this_command; this_command=$BASH_COMMAND' DEBUG
+ trap 'if [ $? -ne 0 ]; then echo -e "\nexit $? due to $previous_command \nBUILD FAILED!"; fi' EXIT
+}
diff --git a/src/config b/src/config
index 57ddb97..6daf980 100755
--- a/src/config
+++ b/src/config
@@ -14,6 +14,7 @@ fi
[ -n "$OCTOPI_WORKSPACE" ] || OCTOPI_WORKSPACE=$SCRIPT_PATH/workspace
[ -n "$CHROOT_SCRIPT_PATH" ] || CHROOT_SCRIPT_PATH=$SCRIPT_PATH/chroot_script
[ -n "$MOUNT_PATH" ] || MOUNT_PATH=$OCTOPI_WORKSPACE/mount
+[ -n "$OVERRIDE_HOSTNAME" ] || OVERRIDE_HOSTNAME=octopi
echo "================================================================"
echo "Using the following config:"
@@ -23,4 +24,5 @@ echo "ZIP_IMG = $ZIP_IMG"
echo "OCTOPI_WORKSPACE = $OCTOPI_WORKSPACE"
echo "CHROOT_SCRIPT_PATH = $CHROOT_SCRIPT_PATH"
echo "MOUNT_PATH = $MOUNT_PATH"
+echo "OVERRIDE_HOSTNAME = $OVERRIDE_HOSTNAME"
echo "================================================================"
diff --git a/src/octopi b/src/octopi
index 4bf3f41..2427f53 100755
--- a/src/octopi
+++ b/src/octopi
@@ -3,11 +3,36 @@
# This script takes a Raspbian image and adds to it octoprint and verions addons
# Written by Guy Sheffer <guysoft at gmail dot com>
# GPL V3
+
+source $SCRIPT_PATH/common.sh
+install_fail_on_error_trap
+
+function execute_chroot_script() {
+ #move OctoPi filesystem files
+ cp -vr --preserve=mode,timestamps $1/filesystem .
+
+ #black magic of qemu-arm-static
+ cp `which qemu-arm-static` usr/bin
+
+ cp $2 chroot_script
+ chmod 755 chroot_script
+ cp $SCRIPT_PATH/common.sh common.sh
+ chmod 755 common.sh
+
+ chroot . usr/bin/qemu-arm-static /bin/bash /chroot_script
+
+ #cleanup
+ rm chroot_script
+ rm -rfv filesystem
+}
+
mkdir -p $OCTOPI_WORKSPACE
mkdir -p $MOUNT_PATH
pushd $OCTOPI_WORKSPACE
- rm *.img
+ if [ -e *.img ]; then
+ rm *.img
+ fi
unzip $ZIP_IMG
IMG_PATH=`ls | grep .img`
@@ -19,21 +44,18 @@ pushd $OCTOPI_WORKSPACE
pushd $MOUNT_PATH
#make QEMU boot (remember to return)
+ fixLd
#sed -i 's@include /etc/ld.so.conf.d/\*.conf@\#include /etc/ld.so.conf.d/\*.conf@' etc/ld.so.conf
- #move OctoPi filesystem files
- cp -av $SCRIPT_PATH/filesystem .
-
- #black magic of qemu-arm-static
- cp `which qemu-arm-static` usr/bin
- cp $CHROOT_SCRIPT_PATH chroot_script
- chmod 755 chroot_script
+ # execute the base chroot script
+ execute_chroot_script $SCRIPT_PATH $CHROOT_SCRIPT_PATH
- chroot . usr/bin/qemu-arm-static /bin/bash /chroot_script
+ # if building a variant, execute its chroot script
+ if [ -n $VARIANT_BASE ]; then
+ execute_chroot_script $VARIANT_BASE $VARIANT_BASE/chroot_script
+ fi
- #cleanup
- rm chroot_script
- rm -rfv filesystem
+ restoreLd
popd
# unmount first boot, then root partition
diff --git a/src/variants/example/chroot_script b/src/variants/example/chroot_script
new file mode 100755
index 0000000..b05e4e8
--- /dev/null
+++ b/src/variants/example/chroot_script
@@ -0,0 +1,15 @@
+#!/usr/bin/env bash
+
+source /common.sh
+
+# exit script on any error
+install_fail_on_error_trap
+
+#change the hostname
+sed -i 's@octopi@example@' /etc/hosts
+
+# install dhclient.conf and possibly other files
+unpackRoot
+
+#cleanup
+apt-get clean
diff --git a/src/variants/example/config b/src/variants/example/config
new file mode 100755
index 0000000..3ce7b42
--- /dev/null
+++ b/src/variants/example/config
@@ -0,0 +1,9 @@
+#!/usr/bin/env bash
+
+# make sure to export all the variables to make them available to the chroot scripts as well
+
+# customize the hostname
+export OVERRIDE_HOSTNAME=blueberrypi
+
+# skip octoprint installation in main build script
+export OVERRIDE_OCTOPRINT=yes
diff --git a/src/variants/example/config.nightly b/src/variants/example/config.nightly
new file mode 100755
index 0000000..679aae8
--- /dev/null
+++ b/src/variants/example/config.nightly
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+export OVERRIDE_HOSTNAME=blueberrypi
+export OVERRIDE_OCTOPRINT=no
diff --git a/src/variants/example/filesystem/root/etc/dhclient.conf b/src/variants/example/filesystem/root/etc/dhclient.conf
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/variants/example/filesystem/root/etc/dhclient.conf