arm-sdk/lib/helpers

130 lines
3.0 KiB
Bash

#!/usr/bin/env zsh
# Copyright (c) 2016 Dyne.org Foundation
# arm-sdk is written and maintained by Ivan J. <parazyd@dyne.org>
#
# This file is part of arm-sdk
#
# This source code 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 software 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 source code. If not, see <http://www.gnu.org/licenses/>.
## helper functions for arm-sdk
build-image() {
fn build-image "$@"
bootstrap $arch
}
get-kernel-sources() {
fn get-kernel-sources
req=(R device_name gitkernel gitbranch)
ckreq || return 1
notice "grabbing kernel sources"
if [[ -d $R/tmp/kernels/$device_name/${device_name}-linux ]]; then
pushd $R/tmp/kernels/$device_name/${device_name}-linux
git pull
popd
else
git clone --depth 1 \
$gitkernel \
-b $gitbranch \
$R/tmp/kernels/$device_name/${device_name}-linux
fi
}
get-kernel-firmware() {
fn get-kernel-firmware
notice "grabbing latest linux-firmware"
local gitsource="https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git"
if [[ -d $R/tmp/linux-firmware ]]; then
pushd $R/tmp/linux-firmware
git pull
popd
else
git clone $gitsource $R/tmp/linux-firmware
fi
}
clone-git() {
fn clone-git "$@"
req=(giturl clonepath)
local giturl="$1"
local clonepath="$2"
local gitbr="$3"
ckreq || return 1
notice "grabbing $(basename $clonepath)"
if [[ -d $clonepath ]]; then
pushd $clonepath
git pull
popd
else
[[ -n $gitbr ]] && gitbr="-b $gitbr"
git clone --depth 1 \
$giturl \
$gitbr \
$clonepath
fi
}
copy-zram-init() {
fn copy-zram-init
req=(R strapdir)
ckreq || return 1
notice "installing zram init"
sudo cp $CPVERBOSE $R/extra/zram $strapdir/root/
}
copy-kernel-config() {
fn copy-kernel-config
req=(device_name)
ckreq || return 1
notice "copying available kernel config"
cp $R/boards/kernel-configs/${device_name}.config \
$R/tmp/kernels/$device_name/${device_name}-linux/.config
}
write-fstab() {
fn write-fstab
req=(strapdir)
ckreq || return 1
cat <<EOF | sudo tee ${strapdir}/etc/fstab
## <file system> <mount point> <type> <options> <dump><pass>
## proc
proc /proc proc nodev,noexec,nosuid 0 0
## rootfs
/dev/mmcblk0p2 / ext4 errors=remount-ro 0 1
## bootfs
/dev/mmcblk0p1 /boot vfat noauto 0 0
EOF
}
rdate-to-rclocal() {
fn rdate-to-rclocal
req=(strapdir)
ckreq || return 1
notice "adding rdate to rc.local"
sed -i -e "s/exit 0/rdate -s pool.ntp.org &/" $strapdir/etc/rc.local
print "exit 0" | sudo tee -a $strapdir/etc/rc.local ${TEEVERBOSE}
}