summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbootstrap-prepare.sh64
1 files changed, 64 insertions, 0 deletions
diff --git a/bootstrap-prepare.sh b/bootstrap-prepare.sh
index 2b8282e..23b6ffa 100755
--- a/bootstrap-prepare.sh
+++ b/bootstrap-prepare.sh
@@ -21,6 +21,7 @@
set -e
+IDX_SHA256SUM='adefcf8322bfab117c9c5295ca5a97b067957382902154605080de6a8a1003b5'
SCRIPT_DIR=
ARCH=
PLAT=
@@ -138,6 +139,69 @@ prepare_packages_from_ftp()
cd ..
}
+prepare_packages()
+{
+ local mirror rand line filename sha256sum
+
+ log 'Selecting package archive mirror...'
+ if [ -r "${SCRIPT_DIR}/mirror" ]; then
+ mirror="$(cat "${SCRIPT_DIR}/mirror")"
+ else
+ rand=$(date '+%S')
+ rand=$(($rand % 2))
+ case ${rand} in
+ 0)
+ mirror='http://proteanos.mirror.gnu.dk'
+ mirror="${mirror}/pub/proteanos"
+ ;;
+ 1)
+ mirror='http://mirror.oss.maxcdn.com/proteanos'
+ ;;
+ esac
+ fi
+
+ log 'Downloading Packages index file...'
+ wget -O Packages "${mirror}/feeds/dev/trunk/src/all/base/Packages"
+ if ! printf '%s Packages\n' "${IDX_SHA256SUM}" | sha256sum -c -; then
+ printf 'ERROR: Checksum of Packages index file failed!\n' >&2
+ exit 1
+ fi
+
+ log 'Downloading source packages...'
+ while IFS='' read -r line; do
+ if [ "x${line%: *}" = 'xFilename' ]; then
+ filename="${line}"
+ filename="${filename#Filename: }"
+ elif [ "x${line%: *}" = 'xSHA256sum' ]; then
+ sha256sum="${line}"
+ sha256sum="${sha256sum#SHA256sum: }"
+ get_pkg "${mirror}" "${filename}" "${sha256sum}"
+ fi
+ done <Packages
+}
+
+get_pkg()
+{
+ local mirror="${1}"
+ local filename="${2}"
+ local sha256sum="${3}"
+
+ [ -d pkg ] || mkdir pkg
+ cd pkg
+
+ wget -O "${filename##*/}" \
+ "${mirror}/feeds/dev/trunk/src/all/base/${filename}"
+
+ filename="${filename##*/}"
+ pkg_ver="${filename#src-}"
+ pkg_ver="${pkg_ver%_src_all.opk}"
+ tar -xzOf "${filename}" data.tar.gz | tar -xz
+ mv "usr/src/${pkg_ver}" "${pkg_ver%_*}"
+ rmdir usr/src usr
+
+ cd ..
+}
+
prepare_file_system()
{
local ma dir