From 2dcc387183d786267b1e89ca6bacfaffb08bedd3 Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Fri, 31 May 2013 18:49:47 -0400 Subject: Move package preparation into a new script. --- (limited to 'bootstrap-prepare.sh') diff --git a/bootstrap-prepare.sh b/bootstrap-prepare.sh new file mode 100755 index 0000000..858d6a1 --- /dev/null +++ b/bootstrap-prepare.sh @@ -0,0 +1,108 @@ +#!/bin/sh + +set -e + +SCRIPT_DIR= +ARCH= + +main() +{ + SCRIPT_DIR="$(cd "${0%/*}" && pwd)" + ARCH="$(cat /etc/proteanos_arch)" + + cat <<-EOF + Preparing packages for bootstrap... + =================================== + EOF + + prepare_packages_from_git + prepare_packages_from_ftp + patch_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' +} + +prepare_packages_from_git() +{ + local repo + + [ -d pkg ] || mkdir pkg + cd pkg + + for repo in zlib toolchains/binutils linux-libre eglibc \ + gmp toolchains/gcc-4.7 toolchains/gcc-defaults \ + busybox gmake; do + log 'Preparing package %s...' "${repo##*/}" + if [ ! -d "${repo##*/}" ]; then + git clone --depth 1 \ + "git://git.proteanos.com/pkg/${repo}.git" + fi + cd "${repo##*/}" + git pull origin master + if [ -x config ]; then + ./config clean + PKG_TARGETS="${ARCH}" ./config + fi + if [ -f source.mk -a ! -f "${repo##*/}"*.orig.tar* ]; then + opkbuild -bCT source + fi + opkbuild -SC + cd .. + done + + cd .. +} + +prepare_packages_from_ftp() +{ + local pkg src_opk path + + cd pkg + + for pkg in mpc mpfr; do + log 'Preparing package %s...' "${pkg}" + if [ ! -d "${pkg}" ]; then + src_opk="src-${pkg}_*_src_all.opk" + path="pub/pkg/${pkg}/${src_opk}" + wget "ftp://files.proteanos.com/${path}" + tar -xzOf ${src_opk} data.tar.gz | tar -xz + mv "usr/src/${pkg}_"* "${pkg}" + fi + done + [ -d usr/src ] && rmdir usr/src + [ -d usr ] && rmdir usr + + cd .. +} + +patch_packages() +{ + local dir patch + + cd pkg + + for dir in */; do + log 'Patching package %s...' "${dir%/}" + if [ -d "${SCRIPT_DIR}/patches/${dir}" ]; then + for patch in "${SCRIPT_DIR}/patches/${dir}"*; do + patch -N -p 1 -u -d "${dir}" -i "${patch}" + done + fi + done + + cd .. +} + +main "${@}" -- cgit v0.9.1