| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 | 
							- #!/bin/sh
 - #
 - # .---.                  .              .
 - # |                      |              |
 - # |--- .--. .-.  .-.  .-.|  .-. .--.--. |.-.  .-. .--.  .-.
 - # |    |   (.-' (.-' (   | (   )|  |  | |   )(   )|  | (.-'
 - # '    '     --'  --'  -' -  -' '  '   -' -'   -' '   -  --'
 - #
 - #                    Freedom in the Cloud
 - #
 - # Based upon bin/mk-freedombox-image from freedom-maker
 - # With non-free stuff removed
 - #
 - # License
 - # =======
 - #
 - # This program is free software: you can redistribute it and/or modify
 - # it under the terms of the GNU General Public License as published by
 - # the Free Software Foundation, either version 3 of the License, or
 - # (at your option) any later version.
 - #
 - # This program is distributed in the hope that it will be useful,
 - # but WITHOUT ANY WARRANTY; without even the implied warranty of
 - # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 - # GNU General Public License for more details.
 - #
 - # You should have received a copy of the GNU General Public License
 - # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 - 
 - set -e # Exit on first error
 - 
 - #set -x # Enable debugging
 - 
 - IMAGE=$1
 - export ARCHITECTURE
 - export MACHINE
 - export SOURCE
 - export SUITE
 - export MY_USERNAME
 - export MY_PASSWORD
 - export ROUTER_IP_ADDRESS
 - export BOX_IP_ADDRESS
 - export NAMESERVER1
 - export NAMESERVER2
 - export PROJECT_NAME
 - export CONFIG_FILENAME
 - export SSH_PUBKEY
 - 
 - # Locate vmdebootstrap program fetched in Makefile
 - basedir=`pwd`
 - vendor_dir="${basedir}/vendor"
 - vmdebootstrap_dir="${vendor_dir}/vmdebootstrap"
 - 
 - if [ -z "$MIRROR" ] || [ -z "$SUITE" ] ; then
 -     echo error: Missing MIRROR and SUITE settings inherited from Makefile.
 -     exit 1
 - fi
 - 
 - # Packages to install in all Freedombone environments
 - base_pkgs="apt base-files ifupdown initramfs-tools \
 - logrotate module-init-tools netbase rsyslog udev debian-archive-keyring"
 - 
 - # Packages needed on the beaglebone
 - beaglebone_pkgs="linux-image-armmp u-boot-tools u-boot"
 - 
 - # Packages needed for self-hosted development
 - dev_pkgs="build-essential devscripts make man-db emacs org-mode git mercurial"
 - 
 - # Packages needed for XFCE desktop environment
 - xfce_pkgs="task-xfce-desktop iceweasel ca-certificates"
 - 
 - echo Building $MACHINE $PROJECT_NAME for $ARCHITECTURE.
 - 
 - case "$MACHINE" in
 -     beaglebone)
 -     extra_pkgs="$beaglebone_pkgs"
 -     extra_opts="\
 -  --variant minbase \
 -  --bootoffset=2mib \
 -  --bootsize 128M \
 -  --boottype ext2 \
 -  --no-kernel \
 -  --no-extlinux \
 -  --foreign /usr/bin/qemu-arm-static \
 -  --roottype btrfs \
 - "
 -     ;;
 -     virtualbox)
 -     extra_opts="\
 -  --grub \
 -  --roottype btrfs \
 - "   ;;
 -     all)
 -     extra_opts="\
 -  --grub \
 -  --roottype btrfs \
 - "   ;;
 - esac
 - 
 - # allow for lots of extra fun customization options.
 - for customization in $CUSTOMIZATIONS
 - do
 -     case "$customization" in
 -         development)
 -             extra_pkgs="$extra_pkgs $dev_pkgs"
 -             ;;
 -     xfce)
 -         extra_pkgs="$extra_pkgs $xfce_pkgs"
 -         ;;
 -     esac
 - done
 - 
 - for p in $base_pkgs $extra_pkgs; do
 -     pkgopts="$pkgopts --package $p"
 - done
 - 
 - # Make sure file is owned by current user, not root
 - touch $(dirname $IMAGE)/${PROJECT_NAME}.log
 - 
 - if [ -x vendor/vmdebootstrap/vmdebootstrap ] ; then
 -     VMDEBOOTSTRAP=vendor/vmdebootstrap/vmdebootstrap
 - else
 -     VMDEBOOTSTRAP=vmdebootstrap
 - fi
 - 
 - echo 'Making customised customisation script'
 - TEMP_CUSTOMISE=/etc/${PROJECT_NAME}/image-customise
 - if [ -f /usr/local/bin/${PROJECT_NAME}-image-customise ]; then
 -     sudo cp /usr/local/bin/${PROJECT_NAME}-image-customise $TEMP_CUSTOMISE
 - else
 -     sudo cp /usr/bin/${PROJECT_NAME}-image-customise $TEMP_CUSTOMISE
 - fi
 - sudo sed -i "s|MY_USERNAME=.*|MY_USERNAME=${MY_USERNAME}|g" $TEMP_CUSTOMISE
 - sudo sed -i "s|MY_PASSWORD=.*|MY_PASSWORD=${MY_PASSWORD}|g" $TEMP_CUSTOMISE
 - sudo sed -i "s|ROUTER_IP_ADDRESS=.*|ROUTER_IP_ADDRESS=${ROUTER_IP_ADDRESS}|g" $TEMP_CUSTOMISE
 - sudo sed -i "s|BOX_IP_ADDRESS=.*|BOX_IP_ADDRESS=${BOX_IP_ADDRESS}|g" $TEMP_CUSTOMISE
 - sudo sed -i "s|NAMESERVER1=.*|NAMESERVER1=${NAMESERVER1}|g" $TEMP_CUSTOMISE
 - sudo sed -i "s|NAMESERVER2=.*|NAMESERVER2=${NAMESERVER1}|g" $TEMP_CUSTOMISE
 - sudo sed -i "s|PROJECT_NAME=.*|PROJECT_NAME=${PROJECT_NAME}|g" $TEMP_CUSTOMISE
 - sudo sed -i "s|CONFIG_FILENAME=.*|CONFIG_FILENAME=${CONFIG_FILENAME}|g" $TEMP_CUSTOMISE
 - sudo sed -i "s|SSH_PUBKEY=.*|SSH_PUBKEY=${SSH_PUBKEY}|g" $TEMP_CUSTOMISE
 - 
 - echo "starting $VMDEBOOTSTRAP"
 - # Run vmdebootstrap script to create image
 - sudo -H \
 -     SUITE="$SUITE" \
 -     MIRROR="$MIRROR" \
 -     BUILD_MIRROR="$BUILD_MIRROR"\
 -     MACHINE="$MACHINE" \
 -     ARCHITECTURE="$ARCHITECTURE" \
 -     SOURCE="$SOURCE" \
 -     CUSTOM_SETUP="$CUSTOM_SETUP" \
 -     $VMDEBOOTSTRAP \
 -     --log $(dirname $IMAGE)/${PROJECT_NAME}.log \
 -     --log-level debug \
 -     --size $IMAGE_SIZE \
 -     --image $IMAGE.img \
 -     --hostname ${PROJECT_NAME} \
 -     --verbose \
 -     --mirror $BUILD_MIRROR \
 -     --customize "$TEMP_CUSTOMISE" \
 -     --lock-root-password \
 -     --arch $ARCHITECTURE \
 -     --distribution $SUITE \
 -     $extra_opts \
 -     $pkgopts
 - 
 - echo 'Removing customised customisation script'
 - sudo shred -zu $TEMP_CUSTOMISE
 
 
  |