#!/bin/sh # # Initial port bootstrap scripts # bootstrap-stage2-test.sh # Tests the installed stage 2 bootstrap system in a changed file system root. # # 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= main() { ARCH="$(cat /etc/proteanos_arch)" cat <<-EOF Testing packages in stage 2... ============================== EOF test_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' } test_packages() { local zlib_upstream_ver opk cd root2 log 'Testing BusyBox...' sudo chroot . true log 'Testing GNU readelf...' sudo chroot . readelf -hl /usr/bin/readelf log 'Testing GCC...' zlib_upstream_ver="$(printf '%s' ../pkg/zlib/zlib-*.orig.tar* | sed \ 's|^.*/zlib-\([a-z0-9.~]*\).*\.orig\.tar.*$|\1|')" tar -xjOf ../pkg/zlib/zlib-*.orig.tar* \ "zlib-${zlib_upstream_ver}/examples/fitblk.c" >fitblk.c sudo chroot . gcc -lz -o /fitblk /fitblk.c sudo chroot . /fitblk 2>&1 | grep -F 'fitblk abort' >/dev/null log 'Testing opkg...' for opk in ../root1/usr/src/*_${ARCH}_${PLAT}.opk \ ../root1/usr/src/*_${ARCH}_all.opk \ ../root1/usr/src/*_all_${PLAT}.opk \ ../root1/usr/src/*_all_all.opk; do [ -f "${opk}" ] || continue case "${opk#../root1/usr/src/}" in "build-essential-${ARCH}_"*) ;; 'build-essential-common_'*) ;; 'build-essential-'*) continue ;; "gcc-${ARCH}_"*) ;; "gcc-"*"-${ARCH}_"*) ;; 'gcc-'*'-common_'*) ;; 'gcc-'*'-locales_'*) ;; 'gcc-'*) continue ;; "g++-${ARCH}_"*) ;; "g++-"*"-${ARCH}_"*) ;; 'g++-'*'-common_'*) ;; 'g++-'*'-locales_'*) ;; 'g++-'*) continue ;; esac cp "${opk}" . done sudo chroot . sh -c 'opkg install /*.opk' rm -f *.opk cd .. } main "${@}"