summaryrefslogtreecommitdiffstats
path: root/bootstrap-prepare.sh
diff options
context:
space:
mode:
authorP. J. McDermott <pjm@nac.net>2013-05-31 18:49:47 (EDT)
committer P. J. McDermott <pjm@nac.net>2013-05-31 18:49:47 (EDT)
commit2dcc387183d786267b1e89ca6bacfaffb08bedd3 (patch)
tree4feadef0c7e8585fd2fade1f3c6883ab17a86222 /bootstrap-prepare.sh
parent14d460fb0c79d2244b20e1d0c959becc1c6d0ee9 (diff)
Move package preparation into a new script.
Diffstat (limited to 'bootstrap-prepare.sh')
-rwxr-xr-xbootstrap-prepare.sh108
1 files changed, 108 insertions, 0 deletions
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 "${@}"