#!/bin/sh # # Initial port bootstrap scripts # bootstrap-stage1-install.sh # Installs built stage 1 packages into a bootstrap system directory. # # Copyright (C) 2013 Patrick "P. J." McDermott # # 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 2 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 . set -e ARCH= PLAT= main() { ARCH="$(cat /etc/proteanos_arch)" PLAT="$(cat /etc/proteanos_plat)" cat <<-EOF Installing packages in stage 1... ================================= EOF install_packages } log() { local msg i msg="$(printf "${@}")" printf '\n%s\n' "${msg}" i=0 while [ ${i} -lt ${#msg} ]; do printf '-' i=$(($i + 1)) done printf '\n\n' } install_packages() { local opk pkg elf_interp [ -d root ] && rm -Rf root mkdir root cd root for opk in ../pkg/*_${ARCH}_${PLAT}.opk ../pkg/*_${ARCH}_all.opk \ ../pkg/*_all_${PLAT}.opk ../pkg/*_all_all.opk; do [ -f "${opk}" ] || continue pkg="${opk#../pkg/}" log 'Installing package %s...' "${pkg%%_*}" tar -xzOf "${opk}" data.tar.gz | tar -xz done elf_interp="$(readelf -l bin/busybox | sed -n \ 's|^.*\[Requesting program interpreter: /\(.*\)\].*$|\1|p')" mkdir -p "${elf_interp%/*}" ln -sf "/lib/${ARCH}/${elf_interp##*/}" "${elf_interp}" cd .. } main "${@}"